ASPNET4.0基础教程(C#)第二章C#语言快速掌握.ppt

上传人:wuy****n92 文档编号:70098447 上传时间:2023-01-16 格式:PPT 页数:65 大小:440KB
返回 下载 相关 举报
ASPNET4.0基础教程(C#)第二章C#语言快速掌握.ppt_第1页
第1页 / 共65页
ASPNET4.0基础教程(C#)第二章C#语言快速掌握.ppt_第2页
第2页 / 共65页
点击查看更多>>
资源描述

《ASPNET4.0基础教程(C#)第二章C#语言快速掌握.ppt》由会员分享,可在线阅读,更多相关《ASPNET4.0基础教程(C#)第二章C#语言快速掌握.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1/65 重点内容:重点内容:l 数据类型数据类型 l 变量和常量变量和常量 l 运算符运算符l 流程控制流程控制l 类和对象类和对象l 委托与事件委托与事件l C#4.0C#4.0的新特性的新特性第第第第2 2 2 2章章章章 C#C#C#C#语言快速掌握语言快速掌握语言快速掌握语言快速掌握 2/65一、数据类型一、数据类型一、数据类型一、数据类型 C#C#中数据类型可以分为值类型和引用类型,如图所中数据类型可以分为值类型和引用类型,如图所示。值类型又可以称为数值类型,其中包含枚举类型示。值类型又可以称为数值类型,其中包含枚举类型(Enum TypesEnum Types)和结构类型()和结

2、构类型(Struct Types Struct Types);引用);引用类型包含类类型(类型包含类类型(Class TypesClass Types)、对象类型()、对象类型(Object Object TypesTypes)、字符串类型()、字符串类型(String TypesString Types)、数组类型)、数组类型(Array TypesArray Types)、接口类型()、接口类型(Interface TypesInterface Types)和)和代理类型(代理类型(Delegate TypesDelegate Types)等。)等。3/65一、数据类型一、数据类型一、数据

3、类型一、数据类型 4/65一、数据类型一、数据类型一、数据类型一、数据类型 1 1 1 1、值类型、值类型、值类型、值类型 值类型主要由结构和枚举组成,其中结构又可以分为:值类型主要由结构和枚举组成,其中结构又可以分为:数值类型、数值类型、boolbool类型和用户定义的结构。基于值类型的变量类型和用户定义的结构。基于值类型的变量直接包含值(对于这句话,读者在学习完引用类型后会有更直接包含值(对于这句话,读者在学习完引用类型后会有更深的理解)。将一个值类型变量赋给另一个值类型变量时,深的理解)。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。将复制包含的值。5/65一、数据类型一、数据

4、类型一、数据类型一、数据类型 1 1 1 1、值类型、值类型、值类型、值类型 (1)数值类型:数值类型主要包括整数、浮点数和小数。整数:整数类型可以分为无符号型、有符号型和char,其中无符号型包括:byte,ushort,uint和ulong;有符号型包括:sbyte,short,int和long。char在C#中表示16 位Unicode字符 浮点数:单精度浮点(float)类型和双精度浮点(double)类型。小数:小数(decimal)类型在所有数值类型中精度是最高的,它有128位,一般做精度要求高的金融和货币的计算。6/65一、一、一、一、数据类型数据类型数据类型数据类型 1 1 1

5、 1、值类型、值类型、值类型、值类型 示例代码:int in =10;/整型char aa=c;/字符串float a=1.0f;/浮点数double b=1.0d;/双精度decimal dec=2.2m;/小数类型7/65一、数据类型一、数据类型一、数据类型一、数据类型 1 1 1 1、值类型、值类型、值类型、值类型 (2)布尔类型 布尔(bool)类型表示布尔逻辑量,对应于.NET Framework中定义的System.Boolean类。布尔类型的可能值为true和false(仅有true和false两个布尔值),其中true表示逻辑真,false表示逻辑假。可以直接将true或fal

6、se值赋给一个布尔变量,或将一个逻辑判断语句的结果赋给布尔类型的变量 8/65一、一、一、一、数据类型数据类型数据类型数据类型 1 1 1 1、值类型、值类型、值类型、值类型 (2)布尔类型 示例代码:bool test=true;bool isBig=100=一元一元var1=var2等价于等价于var1=var1 var2,把,把var1的的二二进进制制值值向右移向右移动动var2位,就得到位,就得到var1 的的值值=一元一元var1=var2等价于等价于var1=var1 二元二元大于关系比大于关系比较较,例如,例如100 1的的结结果果为为true,1 100的的结结果果为为fals

7、e二元二元小于关系比小于关系比较较,例如,例如100 1的的结结果果为为false,1=二元二元大于等于关系比大于等于关系比较较,例如,例如100=1的的结结果果为为true,1=100的的结结果果为为false=二元二元小于等于关系比小于等于关系比较较,例如,例如100=1的的结结果果为为false,1 0)&(b0);bool d=(a10)&(b10);bool e=(a0)|(b0);bool f=(a=10)|(b0);4 4 4 4、逻辑运算符、逻辑运算符、逻辑运算符、逻辑运算符 逻辑逻辑运算符运算符类别类别描述描述&二元二元逻辑逻辑与运算与运算时时,如果有任何一个运算元,如果有任

8、何一个运算元为为假,假,则则运算运算结结果也果也为为假,只有两个运假,只有两个运算元都算元都为为真真时时运算运算结结果才果才为为真。真。二元二元逻辑逻辑或运算同或运算同“逻辑逻辑与与”运算正好相反,如运算正好相反,如果有任何一个运算元果有任何一个运算元为为真,真,则则运算运算结结果果也也为为真,只有两个运算元都真,只有两个运算元都为为假假时时运算运算结结果才果才为为假。假。!一元一元逻辑逻辑非运算是非运算是对对操作数的操作数的逻辑值逻辑值取反,取反,即如果操作数的即如果操作数的逻辑值为逻辑值为真,真,则则运算运算结结果果为为假;反之,如果操作数的假;反之,如果操作数的逻逻辑值为辑值为假,假,则

9、则运算运算结结果果为为真。真。26/65三、运算符三、运算符三、运算符三、运算符 5 5 5 5、条件运算符、条件运算符、条件运算符、条件运算符 C#中唯一的一个三元操作符就是条件运算符(?:),由条件运算符组成的表达式就是条件表达式,条件表达式的一般格式为:操作数1?操作数2:操作数3。示例代码:int a=3;int b=5;int c=ab?100:-10;三、运算符三、运算符三、运算符三、运算符 7 7 7 7、运算符的优先级、运算符的优先级、运算符的优先级、运算符的优先级 在在C#C#中为这些运算符定义了不同的优先级,相同优先级中为这些运算符定义了不同的优先级,相同优先级的运算符,除

10、了赋值运算符按照从右至做的顺序执行之外,的运算符,除了赋值运算符按照从右至做的顺序执行之外,其余运算符按照从左至右的顺序执行。括号是优先级最高其余运算符按照从左至右的顺序执行。括号是优先级最高的,可以任意的改变符号的计算顺序。在的,可以任意的改变符号的计算顺序。在C#C#中运算符的优中运算符的优先级定义如右表所示,其中先级定义如右表所示,其中1 1级表示最高优先级,级表示最高优先级,1212级表级表示最低优先级。示最低优先级。7 7 7 7、运算符的优先级、运算符的优先级、运算符的优先级、运算符的优先级 29/65四、流程控制四、流程控制四、流程控制四、流程控制 一般来说,程序代码除了顺序执行

11、之外,对于复杂的工作,一般来说,程序代码除了顺序执行之外,对于复杂的工作,为了达到预期的执行结果,还需要使用为了达到预期的执行结果,还需要使用“流程控制结构流程控制结构”来来控控制程序的执行。流程控制语句是使用条件表达式来进行判制程序的执行。流程控制语句是使用条件表达式来进行判断,以便执行不同的程序代码段,或是重复执行指定的程序断,以便执行不同的程序代码段,或是重复执行指定的程序代码段。代码段。30/65四、流程控制四、流程控制四、流程控制四、流程控制 1 1 1 1、条件语句、条件语句、条件语句、条件语句 (1)(1)if语句语句 ifif语句是最常用的分支语句,使用该语句可以有条件地执行其

12、他语句。语句是最常用的分支语句,使用该语句可以有条件地执行其他语句。ifif语句的最基本使用格式为:语句的最基本使用格式为:if(if(测试条件测试条件)测试条件为测试条件为truetrue时的代码或者代码块时的代码或者代码块 ifif语句可以和语句可以和elseelse语句合并执行,使用格式如下:语句合并执行,使用格式如下:if(if(测试条件测试条件)测试条件为测试条件为truetrue时的代码或者代码块时的代码或者代码块elseelse测试条件为测试条件为falsefalse时的代码或者代码块时的代码或者代码块 31/65(1)if语句 示例 static void Main(strin

13、g args)Console.WriteLine(请输入第一个数:请输入第一个数:);double var1=Convert.ToDouble(Console.ReadLine();Console.WriteLine(请输入第二个数:请输入第二个数:);double var2=Convert.ToDouble(Console.ReadLine();string comparison;/进行判断,根据进行判断,根据var1和和var2的值设置的值设置comparison if(var1 var2)comparison=小于小于;else if(var1=var2)comparison=等于等于;

14、else comparison=大于大于;/打印结果打印结果 Console.WriteLine(0 1 2,var1,comparison,var2);/暂停程序的执行,给用户机会浏览输出结果暂停程序的执行,给用户机会浏览输出结果 Console.WriteLine(nn按回车键退出程序按回车键退出程序);Console.ReadLine();32/65四、流程控制四、流程控制四、流程控制四、流程控制 1 1 1 1、条件语句、条件语句、条件语句、条件语句 (2)switch语句 switch语句非常类似于if语句,它也是根据测试的值来有条件地执行代码,实际上switch语句完全可以使用if

15、语句代替。一般情况下,如果只有简单的几个分支就需要使用if语句,否则建议使用switch语句,这样可以使代码的执行效率比较高。switch语句的基本语法定义如下:33/651 1 1 1、条件语句、条件语句、条件语句、条件语句 switch(测试值)case 比较值1:当测试值等于比较值1时要执行的代码 break;case 比较值2:当测试值等于比较值2时要执行的代码 break;.case 比较值n:当测试值等于比较值n时要执行的代码 break;default:当测试值不等于以上各个比较值时要执行的代码 break;34/65(2)switch语句 示例 static void Main

16、(string args)Console.WriteLine(本系统使用本系统使用1-7代表一周的每一天代表一周的每一天,请输入其中一个请输入其中一个11.数字数字,系统将返回该数字代表的星期系统将返回该数字代表的星期数。数。);int var=Convert.ToInt32(Console.ReadLine();switch(var)case 1:Console.WriteLine(您选择的是星期一您选择的是星期一);break;case 2:Console.WriteLine(您选择的是星期二您选择的是星期二);break;case 3:Console.WriteLine(您选择的是星期三

17、您选择的是星期三);break;case 4:Console.WriteLine(您选择的是星期四您选择的是星期四);break;case 5:Console.WriteLine(您选择的是星期五您选择的是星期五);break;case 6:Console.WriteLine(您选择的是星期六您选择的是星期六);break;case 7:Console.WriteLine(您选择的是星期日您选择的是星期日);break;default:Console.WriteLine(您输入的数字有误您输入的数字有误,请重新输入请重新输入);break;Console.WriteLine(n按回车键退出程序

18、按回车键退出程序);Console.ReadLine();35/65四、流程控制四、流程控制四、流程控制四、流程控制 2 2 2 2、循环语句、循环语句、循环语句、循环语句 (1)do-while循环 do-while语句根据其布尔表达式的值有条件的执行它的嵌套语句一次或者多次,其语法定义如下:do 循环代码while(布尔表达式);36/65四、流程控制四、流程控制四、流程控制四、流程控制 2 2 2 2、循环语句、循环语句、循环语句、循环语句 示例代码:int i=1;do Console.WriteLine(0,i+);while(i=10);37/65四、流程控制四、流程控制四、流程控

19、制四、流程控制 2 2 2 2、循环语句、循环语句、循环语句、循环语句 (2)while循环 while循环非常类似于do循环,其语法定义如下:while(布尔表达式)循环代码 38/65四、流程控制四、流程控制四、流程控制四、流程控制 2 2 2 2、循环语句、循环语句、循环语句、循环语句 示例代码:int i=1;while(i=10)Console.WriteLine(0,i+);39/65四、流程控制四、流程控制四、流程控制四、流程控制 2 2 2 2、循环语句、循环语句、循环语句、循环语句 (3)for循环 for循环是最常用的一种循环语句,这类循环可以执行指定的次数,并维护它自己的

20、计数器。for语句首先计算一系列初始表达式的值,接下来当条件成立时,执行其嵌套语句,之后计算重复表达式的值并根据其值决定下一步的操作。for循环的语法定义如下:for(循环变量初始化;循环条件;循环操作)循环代码 40/65四、流程控制四、流程控制四、流程控制四、流程控制 2 2 2 2、循环语句、循环语句、循环语句、循环语句 示例代码:for(int i=1;i=10;i+)Console.WriteLine(0,i);41/65五、五、五、五、类和对象类和对象类和对象类和对象 面向对象的程序设计(OOP:Object-Oriented Programming)是一种基于结构分析的、以数据为

21、中心的程序设计方法。其主要思想是将数据及处理这些数据的操作都封(Encapsulation)到一个称为类(Class)的数据结构中,使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。42/651 1 1 1、类、类、类、类 类中包含数据成员(常数、域和事件)、功能成员(方法、属性、索引、操作符、构造函数和析构函数)和嵌套类型。类类型支持继承,派生的类可以对基类进行扩展和特殊化。面向对象的编程方法是程序设计的一次大的进步,程序员跳出了结构化程序设计的传统方法。五、类和对象五、类和对象五、类和对象五、类和对象 43/651 1 1 1、类、类、类、类 与传统的面向过程的设

22、计方法相比,采用面向对象的设计方法设计的程序可维护性较好,源程序易于阅读和理解和修改,降低了复杂度。类的可继承特性,使得程序代码可以复用,子类中可以继承祖先类中的部分代码。由于类封装了数据和操作,从类外面看,只能看到公开的数据和操作,而这些操作都在类设计时进行安全性考虑,因而外界操作不会对类造成破坏。五、类和对象五、类和对象五、类和对象五、类和对象 五、类和对象五、类和对象五、类和对象五、类和对象 1 1 1 1、类、类、类、类 C#C#中提供了很多标准的类,用户在开发过程中可以使中提供了很多标准的类,用户在开发过程中可以使用这些类,这样大大节省了程序的开发时间。用这些类,这样大大节省了程序的

23、开发时间。C#C#中也可以中也可以自己定义类,类的定义方法为:自己定义类,类的定义方法为:类修饰符类修饰符 class class 类名类名:父类名父类名 成员修饰符成员修饰符 类的成员变量或者成员函数类的成员变量或者成员函数;类修饰符类修饰符含义含义说明说明newnew新建的类新建的类当当newnew用于修饰类时,用于修饰类时,newnew修饰符只允许出现在嵌套类中,修饰符只允许出现在嵌套类中,它指定了一个类通过相同的名称隐藏了一个继承成员。它指定了一个类通过相同的名称隐藏了一个继承成员。publicpublic公有的类公有的类外界可以不受限制地访问外界可以不受限制地访问protectedp

24、rotected受保护的受保护的类类当用当用proectedproected修饰类时,表示可以访问该类或从该类派生修饰类时,表示可以访问该类或从该类派生的类型的类型internalinternal内部类内部类对整个应用程序是公有的,其他应用程序不可以访问对整个应用程序是公有的,其他应用程序不可以访问该类该类privateprivate私有类私有类表明只有包含该类的类型才能访问它表明只有包含该类的类型才能访问它abstractabstract抽象类抽象类说明该类是一个不完整的类,只有声明而没有具体的说明该类是一个不完整的类,只有声明而没有具体的实现。一般只能用来做其他类的基类,而不能单独使实现。

25、一般只能用来做其他类的基类,而不能单独使用。用。sealedsealed密封类密封类说明该类不能作其他类的基类,不能再派生新的类。说明该类不能作其他类的基类,不能再派生新的类。类修饰符类修饰符类修饰符类修饰符 46/65类成员修饰符 47/652 2 2 2、属性和方法、属性和方法、属性和方法、属性和方法 在C#中,按照类的成员是否为函数将其分为两大类,一种不以函数形式体现,称为成员变量,主要有以下几个类型:常量:代表与类相关的常量值。变量:类中的变量。事件:由类产生的通知,用于说明发生了什么事情。类型:属于类的局部类型。48/652 2 2 2、属性和方法、属性和方法、属性和方法、属性和方法

26、 另一种是以函数形式体现,一般包含可执行代码,执行时完成一定的操作,被称为成员函数,主要有以下几个类型:方法:完成类中各种计算或功能的操作,不能和类同名,也不能在前面加“”波浪线符号。方法名不能和类中其他成员同名。49/652 2 2 2、属性和方法、属性和方法、属性和方法、属性和方法 属性:定义类的值,并对它们提供读、写操作。索引指示器:允许编程人员在访问数组时,通过索引指示器访问类的多个实例,又称下标指示器。运算符:定义类对象能使用的操作符。构造函数:在类被实例化时首先执行的函数,主要是完成对象初始化操作。构造函数必须和类名相同。析构函数:在类被删除之前最后执行的函数,主要是完成对象结束时

27、的收尾操作。构造函数必须和类名相同,并前加一个“”波浪线符号。50/652 2 2 2、属性和方法、属性和方法、属性和方法、属性和方法 属性:定义类的值,并对它们提供读、写操作。索引指示器:允许编程人员在访问数组时,通过索引指示器访问类的多个实例,又称下标指示器。运算符:定义类对象能使用的操作符。构造函数:在类被实例化时首先执行的函数,主要是完成对象初始化操作。构造函数必须和类名相同。析构函数:在类被删除之前最后执行的函数,主要是完成对象结束时的收尾操作。构造函数必须和类名相同,并前加一个“”波浪线符号。C#中的类成员可以是任中的类成员可以是任意类型,包括数组和集意类型,包括数组和集合。当一个

28、类包含了数合。当一个类包含了数组和集合成员时,索引组和集合成员时,索引器将大大简化对数组或器将大大简化对数组或集合成员的存取操作。集合成员的存取操作。51/65五、类和对象五、类和对象五、类和对象五、类和对象 3 3 3 3、对象的创建、对象的创建、对象的创建、对象的创建 构造函数是当类被实例化时首先执行的函数,就是new关键字后面的函数。当创建一个对象时,系统首先给对象分配合适的内存空间,随后系统就自动调用对象的构造函数。因此构造函数是对象执行的入口函数,非常的重要。在定义类时,可以给出构造函数也可以不定义构造函数。如果类中没有构造函数,系统会默认执行System.Object提供的构造函数

29、。52/65五、类和对象五、类和对象五、类和对象五、类和对象 3 3 3 3、对象的创建、对象的创建、对象的创建、对象的创建 如果要定义构造函数,那么构造函数的函数名必须和类名一样。构造函数的类型修饰符总是公有类型public的,如果是私有类型private的,表示这个类不能被实例化,这通常用于只含有静态成员的类中。构造函数由于不需要显式调用,因而不用声明返回类型。构造函数可以带参数也可以不带参数。具体实例化时,对于带参数的构造函数,需要实例化的对象也带参数,并且参数个数要相等,类型要一一对应。如果是不带参数的构造函数,因而在实例化时对象不具有参数。53/653 3 3 3、对象的创建、对象的

30、创建、对象的创建、对象的创建 示例示例 public class Shapepublic class Shape protected string type;protected string type;protected double x,y;protected double x,y;public Shape()public Shape()x=0;x=0;y=0;y=0;type=type=形状形状;public Shape(double x,double y)public Shape(double x,double y)this.x=x;this.x=x;this.y=y;this.y=y;

31、type=type=形状形状;public virtual double GetArea()public virtual double GetArea()return x*y;return x*y;public string GetShapeType()public string GetShapeType()return type;return type;54/65五、类和对象五、类和对象五、类和对象五、类和对象 4 4 4 4、对象的回收、对象的回收、对象的回收、对象的回收 析构函数是当实例对象从内存中删除前最后执行的函数。析构函数是一个实现破坏一个类的实例的行为的成员,和构造函数不同,析构

32、函数在类撤销时运行,常用来处理类用完后的收尾工作。如果在对象在运行过程中动态申请了内存控件,就需要在析构函数中进行回收工作。55/65五、类和对象五、类和对象五、类和对象五、类和对象 4 4 4 4、对象的回收、对象的回收、对象的回收、对象的回收 析构函数不能带有参数,也不能被继承,不能拥有访问修饰符,并且不能显式地被调用(在该对象被撤销时自动被调用)。一个析构函数声明的标识符必须为声明析构函数的类命名,并要在前面加一个“”符号,如果指定了任何其他名称,就会发生一个错误。56/65五、类和对象五、类和对象五、类和对象五、类和对象 4 4 4 4、对象的回收、对象的回收、对象的回收、对象的回收

33、示例示例 class MyClass MyClass()/收尾工作 57/65五、类和对象五、类和对象五、类和对象五、类和对象 5 5 5 5、继承、继承、继承、继承 继承性是面向对象的一个重要特性,C#中支持类的单继承,即只能从一个类继承。继承是传递的,如果C继承了B,并且B继承了A,那么C继承在B中声明的public和protected成员同时也继承了在A中声明的public和protected成员。继承性使得软件模块可以最大限度地复用,并且编程人员还可以对前人或自己以前编写的模块进行扩充,而不需要修改原来的源代码,大大提高了软件的开发效率。58/65五、类和对象五、类和对象五、类和对象五

34、、类和对象 5 5 5 5、继承、继承、继承、继承 在定义类的时候可以指定要继承的类,语法如下:类修饰符 class 类名:父类名 成员修饰符 类的成员变量或者成员函数;派生类是对基类的扩展,派生类可以增加自己新的成员,但不能对已继承的成员进行删除,只能不予使用。基类可以定义自身成员的访问方式,从而决定派生类的访问权限。且可以通过定义虚方法、虚属性,使它的派生类可以重载这些成员,从而实现类的多态性。59/65五、类和对象五、类和对象五、类和对象五、类和对象 6 6 6 6、多态、多态、多态、多态 类的另外一个特性是多态性,所谓多态性是指同一操作作用于不同类的实例,这些类进行不同的解释,从而产生

35、不同的执行结果的现象。例如假设矩形Rectangle,正方形Square,圆形Circle等类中都定义了一个叫ShowArea的成员函数用于显示其面积,显然当调用不同的对象实例时,会产生不同的结果。60/65六、委托与事件六、委托与事件六、委托与事件六、委托与事件 1 1 1 1、委托、委托、委托、委托 委托是一种安全地封装方法的类型,它与C和C+中的函数指针类似。与C中的函数指针不同,委托是面向对象 的、类型安全的和保险的。委托的类型由委托的名称定义。一个委托可以看作一个特殊的类,因而它的定义可以像常规类一样放在同样的位置。与其他类一样,委托必须先定义以后,再实例化。与类不同的是,实例化的委

36、托没有与之相应的术语(类的实例化称作对象),作为区分我们将实例化的委托称为委托实例。61/65六、委托与事件六、委托与事件六、委托与事件六、委托与事件 1 1 1 1、委托、委托、委托、委托 下面的示例声明了一个名为Del的委托,该委托可以封装一个采用字符串作为参数并返回void的方法。public delegate void Del(string message);62/651 1 1 1、委托、委托、委托、委托 委托具有以下特点:委托类似于 C+函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需

37、要与委托签名精确匹配,匿名方法允许将代码块作为参数传递,以代替单独定义的方法63/65六、委托与事件六、委托与事件六、委托与事件六、委托与事件 2 2 2 2、事件、事件、事件、事件 事件是类在发生其关注的事情时用来提供通知的一种方事件是类在发生其关注的事情时用来提供通知的一种方式。式。例如,封装用户界面控件的类可以定义一个在用户单击例如,封装用户界面控件的类可以定义一个在用户单击该控件时发生的事件。控件类不关心单击按钮时发生了什么,该控件时发生的事件。控件类不关心单击按钮时发生了什么,但它需要告知派生类单击事件已发生。但它需要告知派生类单击事件已发生。然后,派生类可选择如何响应。事件使用委托

38、来为触发然后,派生类可选择如何响应。事件使用委托来为触发时将调用的方法提供类型安全的封装。委托可以封装命名方时将调用的方法提供类型安全的封装。委托可以封装命名方法和匿名方法。法和匿名方法。六、委托与事件六、委托与事件六、委托与事件六、委托与事件 64/65六、委托与事件六、委托与事件六、委托与事件六、委托与事件 2 2 2 2、事件、事件、事件、事件 事件具有以下特点:事件具有以下特点:事件是类用来通知对象需要执行某种操作的方式。事件是类用来通知对象需要执行某种操作的方式。尽管事件在其他时候(如信号状态更改)也很有用,事尽管事件在其他时候(如信号状态更改)也很有用,事件通常还是用在图形用户界面

39、中。件通常还是用在图形用户界面中。事件通常使用委托事件处理程序进行声明。事件通常使用委托事件处理程序进行声明。事件可以调用匿名方法来替代委托。事件可以调用匿名方法来替代委托。65/65七、七、七、七、C#4.0C#4.0C#4.0C#4.0的新特性的新特性的新特性的新特性 1.大整数类型大整数类型BigInteger:是不可变类型,代表一个任意大的整数是不可变类型,代表一个任意大的整数,其值在理论上已没,其值在理论上已没有上部或下部的界限有上部或下部的界限。2.动态数据类型动态数据类型dynamic:是是C#4.0引入了一个新的静态类型,它会告诉编译器,在编引入了一个新的静态类型,它会告诉编译器,在编译期不去检查译期不去检查dynamic类型,而是在运行时才决定。类型,而是在运行时才决定。3.命名参数命名参数:命名参数让我们可以在调用方法时指定参数名字来给参数赋命名参数让我们可以在调用方法时指定参数名字来给参数赋值,这种情况下可以忽略参数的顺序。值,这种情况下可以忽略参数的顺序。4.可选参数:可选参数:调用时可以为可选的参数省略参数值。每个可选参数都具有调用时可以为可选的参数省略参数值。每个可选参数都具有默认值作为其定义的一部分默认值作为其定义的一部分

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁