《第2章C语言基础.ppt》由会员分享,可在线阅读,更多相关《第2章C语言基础.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ASP.NET框架中提供了多种语言支持,其中C#语言是使用ASP.NET创建应用程序的基础语言之一。C#语言是微软为ASP.NET量身定做的语言,具有良好的兼容性和可扩展性。C#语言是一种强大的面向对象语言,支持类、接口、封装、抽象等功能,代码健壮、易于调试。开发人员可以使用C#语言创建任何一种.NET应用程序。本书所有代码都是使用C#来编写,因此掌握C#的基本语法,是ASP.NET入门的第一步。2.1C#语言的特点 2.2C#程序设计基础 2.3C#语言面向对象的特性 2.4C#的特性2.1C#语言的特点简单现代面向对象版本控制兼容灵活C#程序设计基础C#的程序结构使用C#语言来编写应用程序
2、时,每个文件可以包含零个或零个以上的命名空间。一个命名空间除了可以包含其他命名空间外,还可以包含类、结构、接口、枚举、委托等类型。C#中程序结构的关键概念为程序、命名空间、类型、成员和程序集。在程序中可以声明类型,类型中可以包含成员,而最典型的类型的使用就是类和接口。成员可以包含字段、方法、属性和事件。当C#程序被编译时,它们被物理地打包到程序集中。程序集的文件扩展名一般为.exe或者.dll,这取决于它们是实现为应用程序(application),还是类库(library)。C#语言的数据类型值类型类型含义Sbyte代表有符号的8位整数,数值范围从-128127Byte代表无符号的8位整数,
3、数值范围从0255Short代表有符号的16位整数,范围从-32,76832,767ushort代表无符号的16位整数,范围从065,535 Int代表有符号的32位整数,范围从-21474836482147483648uint代表无符号的32位整数,范围从04294967295Long代表有符号的64位整数,范围从-92233720368547758089223372036854775808Ulong代表无符号的64位整数,范围从018446744073709551615C#语言的数据类型引用类型引用类型包括类类型、接口类型、代表类型和数组类型。引用类型的变量又称为对象,是可存储对实际数据的
4、引用。如果声明了一个引用类型的变量却不给它赋给任何对象,那么它的默认值就是null。而数值类型的值是不能为null。变量变量 变量名必须以字母开头。 变量名只能由字母、数字和下划线组成,而且不能包含空格、标点符号、运算符等其他符号。 变量名不能与C#中的关键字名称相同。 变量名不能与C#中的库函数名称相同。变量 变量名必须以字母开头。 变量名只能由字母、数字和下划线组成,而不能包含空格、标点符号、运算符等其他符号。 变量名不能与C#中的关键字名称相同。 变量名不能与C#中的库函数名称相同。运算符在C#语言中,和其他编程语言一样,具有多种运算符。在C#语言中,运算符大体分为6种:算术运算符、条件
5、运算符、逻辑运算符、关系运算符、赋值运算符和成员访问运算符。运算符算术运算符表类别运算符 说明表达式算数运算符+执行加法运算(如果两个操作数是字符串,则该运算符用作字符串连接运算符,将一个字符串添加到另一个字符串的末尾)操作数1+操作数2-执行减法运算操作数1-操作数2算数运算符*执行乘法运算操作数1*操作数2/执行除法运算操作数1/操作数2%获得进行除法运算后的余数操作数1%操作数2+将操作数加1操作数+或+操作数-将操作数减1操作数-或-操作数将一个数按位取反操作数运算符关系运算符 类别运算符说明表达式关系运算符检查一个数是否大于另一个数操作数1操作数2检查一个数是否小于另一个数操作数1=
6、检查一个数是否大于或等于另一个数操作数1=操作数2=检查一个数是否小于或等于另一个数操作数1=操作数2=检查两个值是否相等操作数1=操作数2!=检查两个值是否不相等操作数1!=操作数2运算符其他运算符类别运算符说明表达式成员访问运算符.用于访问数据结构的成员数据结构.成员赋值运算符=给变量赋值操作数1=操作数2逻辑运算符&对两个表达式执行逻辑“与”运算操作数1&操作数2|对两个表达式执行逻辑“或”运算操作数1|操作数2!对两个表达式执行逻辑“非”运算!操作数()将操作数强制转换为给定的数据类型(数据类型)操作数条件运算符(三元运算符)?:检查给出的第一个表达式是否为真。如果为真,则计算操作数1
7、,否则计算操作数2。这是唯一带有3个操作数的运算符表达式:操作数1:操作数2运算符运算符优先级运算符类型运算符元运算符X.y,f(x),ax,x+,x-,new,typeof,checked,unchecked一元运算符+,-,!,+x,-x,(T)x算术运算符*,/,%位运算符,&,|,关系运算符,=,is,as逻辑运算符&,|条件运算符&,|,?赋值运算符=,+=,-=,*=,/=,=,&=,=,|=选择语句循环语句选择语句中,程序会根据条件表达式的值来判断程序将要执行的代码块,常用的条件语句有if、if else、if else if、switch等。C#中的ifelse语句的语法结构如
8、下。语法格式为: if(条件)执行语句;或if(条件)执行语句1;else执行语句2; 要实现多重分支判断,一般采用switchcase语句。switchcase语句可以根据条件从一组不同的分支中选择一个来执行。switch(条件)case 常数表达式1:执行语句;break;case 常数表达式2:执行语句;break;case 常数表达式3:执行语句;break;default:默认的处理语句;break; 在C#语言中提供的循环语句,主要有for、while、do while、foreach等。这些循环语句可以充分解决程序开发过程中,需要重复循环才能实现的问题。循环语句能够减少代码量,避
9、免重复输入相同的代码行,也能够提高应用程序的可读性。for语句一般用于已知重复执行次数的循环,是程序开发中常用的循环条件之一。当for循环表达式中的条件为true时,就会一直循环代码块。因为,循环的次数是在执行循环语句之前计算的,所以for循环又称作预测式循环;当for循环表达式中的条件为false时,for循环会结束循环并跳出。for循环的语法格式如下。for(初始变量;循环条件;计数器)循环语句; while语句同for语句一样都可以执行循环,但是while语句的使用更加灵活,开发人员可以在代码块执行前判断条件,也可以在代码块执行一次后再进行判断条件。while语句略带有if语句的特点,同
10、样也是经常使用的循环语句。while循环语句的语法格式如下。while(循环条件)循环语句; do while循环其实是while循环的一种特殊形式,区别在于do while循环会先执行一次循环语句,然后再判断while中的条件,这种循环称为后测试循环。do while 循环语句的语法格式如下。 do循环语句;while(循环条件)foreach循环是for循环的一种特殊表现形式,如果想重复集合或者数组中的所有条目,使用foreach是很好的解决方案。foreach语句的语法格式如下。foreach(类型 变量名 in 集合) 循环语句; 类声明构造函数与析构函数方法C#是面向对象的编程语言。
11、在面向对象开发当中,不可避免地要创建一个类。“类”是一种构造,通过使用该构造,开发人员可以将其他类型的变量、方法和事件组合在一起,从而创建自己的自定义类型。在C#中使用关键字class来声明类,声明形式如下。类修饰符 class 【类名】 : 【基类或接口】 【类体】 ;在C#中声明新类时,其类名的定义需要遵循一定的命名规则,类名最好能体现类的含义和用途。类名一般采用第一个字母大写的名词,也可以采用多个词构成的组合词。如果类名由多个词组成,则每一个词的第一个字母都应该大写。另外,在同一个命名空间内,类名不能重复。类的访问权限Public:使用public关键字修饰的类,具有最高访问级别,它的任
12、何对象或者其他的类都能对public关键字所修饰的类或类成员进行访问。Private:关键字所定义的访问权限是受限制的,在C#语言中具有最低的访问级别,这样可以保证类和类成员的安全,同时也限制了其他类或对象对它的访问。私有成员只有在声明它们的类之后才能访问 。Protected:字段具有保护类中字段的功能,能够保证类和类成员的安全性,也能够限制其他类或对象对它的访问。但是与private不同的是,protected能够在类和类的派生类中使用,比private具有更高的访问级别,又比public拥有更低的访问级别,保证了类的安全性。 internal字段修饰的类或类成员,只有在同一程序集的文件中
13、,内部类型或成员才可以访问。类的成员 字段:通常用来存储类中对象的值。属性:属性可以为字段提供保护,避免字段在用户创建的对象不知情的情况下被更改。方法:方法是由“”组合在一起的代码块,用来接收输入数据,在方法体内进行运算处理,并返回处理结果。事件:事件是一个对象向其他对象提供有关事件发生的通知的一种方式。构造函数与析构函数 构造函数 构造函数不声明返回类型(甚至也不能使用void),也不能返回值。 一般地,构造函数总是public类型的。private 类型的构造函数,表明类不能被实例化,通常用于只含有静态成员的类。 在构造函数中不要做对类的实例进行初始化以外的事情,也不能被显式地调用。构造函
14、数与析构函数 析构函数 只能对类定义析构函数,结构不支持析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数,在对象注销时,系统会自动调用。 析构函数既没有修饰符也不能为它传递参数。C#的特性接口与集合委托与事件泛型C#的特性接口与集合接口 继承接口的任何非抽象类型都必须实现接口的所有成员。 不能直接实例化接口。 接口可以包含事件、索引器、方法和属性。 接口不包含方法的实现。 类可以继承多个接口。 接口可以继承多个接口。C#的特性接口与集合集合 集合类定义为 System.Collection或System. Collections. Generic命名空间的一部
15、分。 大多数集合类都派生自ICollection、IComparer、IEnumerable、IList、IDictionary和IDictionaryEnumerator 接口以及它们的等效泛型接口。 使用泛型集合类可以提供更高的类型安全性,在某些情况下还可以提供更好的性能,尤其是在存储值类型时,这些优势会体现得更明显。C#的特性委托与事件委托在C#中实现委托的方法有以下几个步骤。 (1)声明委托。 (2)定义呼叫者和调用的函数。 (3)定义被呼叫者和具体实现的函数(被调用的函数)C#的特性委托与事件事件在C#中实现委托的方法有以下几个步骤。 事件通常使用委托事件处理程序进行声明。 事件始终
16、通知对象消息并指示需要执行某种操作的一种方式。 发行者确定何时引发事件,订阅者确定执行何种操作来响应该事件。 一个事件可以有多个订阅者。一个订阅者可处理来自多个发行者的多个事件。 没有订阅者的事件永远不会被调用。 事件通常用于通知用户操作,如图形用户界面中的按钮单击或菜单选择操作。 如果一个事件有多个订阅者,当引发该事件时,会同步调用多个事件处理程序,也可以使用异步处理多个事件。C#的特性泛型 泛型在C#中泛型具有以下特点。 如果实例化泛型类型的参数相同,那么JIT编译器会重复使用该类型,因此C#的动态泛型能力避免了C+静态模板可能导致的代码膨胀的问题。 C#泛型类型携带有丰富的元数据,因此C#的泛型类型可以应用于强大的反射技术。 C#的泛型采用“基类、接口、构造器、值类型/引用类型”的约束方式来实现对类型参数的“显示约束”,提高了类型安全的同时,也丧失了C+模板基于“签名”的隐式约束所具有的高灵活性。