《第2章C语言与面向对象的编程基础.ppt》由会员分享,可在线阅读,更多相关《第2章C语言与面向对象的编程基础.ppt(74页珍藏版)》请在三一办公上搜索。
1、ASP.NET 网络应用程序开发,计算机科学系 刘彦宾,2023/8/31,2,第2章 C#语言与面向对象的编程基础,2.1 C#程序的开发2.2 数据类型2.3 运算符 2.4 控制语句 2.5 命名空间,2023/8/31,3,C#是微软公司专门为.NET量身订制的新一代程序开发语言,它充分吸收了过去几十年中计算机科学发展的经验教训,体现了当前最新程序设计技术的功能和精华,从C#的身上可以看到C+、Visual Basic、Dephi、Java等语言的很多优点。C#最突出的特点是:现代、简单、面向对象和类型安全。,2023/8/31,4,使用C#开发基于.NET的应用程序,具有良好的安全性
2、和跨平台性。C#用途广泛,可以开发Windows、ASP.NET、Web服务,甚至是Windows底层的各种不同类型的应用程序。C#的程序可以通过XML交换数据信息。因为XML是纯文本的信息,这就为通过C#开发的应用程序的跨平台性能提供了强大的保障。C#的程序运行方式也是独特的,其应用程序完全在.NET平台的管理下运行,这就大大地增加了应用程序的稳定性和安全性。,2023/8/31,5,2.1 C#程序的开发,C#程序的开发方式有两种:一种是使用Visual Studio.NET提供的集成开发环境IDE进行开发;另一种方式是使用文本编辑器编写程序代码,然后以.cs保存源文件,并用命令行编辑器(
3、csc)进行编译。,2023/8/31,6,简单的欢迎程序,using System;namespace ConsoleApplication1 class Program static void Main(string args)Console.WriteLine(欢迎使用C sharp 编程!);,“Main”方法和语句方法名“Main”作为保留字,是程序的起点。前面的static修饰符表明该方法仅仅在该特定的类中工作,而不是在该类的实例中工作。这是必需的,因为一旦程序启动后,并不存在对象的实例。,类,名称空间的声明,2023/8/31,7,在编写程序时需要注意以下几点:与C和C+相同,C
4、#对于大小写是敏感的。Main()是程序的入口点,每个程序都必须含有一个Main()方法。C#用分号作为分隔符来终止每条语句。C#程序可以含有注释。单行注释使用“/”标注,注释内容到本行结束为止。如果需要扩展到多行注释,将注释内容用“/*”和“*/”括起来即可。,2023/8/31,8,using System;namespace ConsoleApplication1 class Program static void Main(string args)Console.Write(What is your name?:);Console.Write(Hello,0!,Console.Read
5、Line();Console.WriteLine(欢迎使用C sharp 编程!);,/Write(.)与 WriteLine(.)的区别是:Write(.)语句把信息输出到控制台,之后光标停留在同一行,而WriteLine(.)把信息输出,之后换行。,2023/8/31,9,整型布尔型字符型(整型的一种特殊情况)浮点型小数型,简单类型(Simple types)结构类型(struct types)枚举类型(Enumeration types),2.2 数据类型,C#语言的数据类型主要分为两类:值类型(Value Type)和引用类型(Reference Type)。其中,值类型的变量直接存储
6、它的数据内容,而引用类型的变量存储的是对实际数据的引用。C#的引用类型包括类类型(Class Type)、数组类型(Array Type)、接口类型(Interface Type)和委托类型(Delegate Type)。,对象类型类类型接口代表元字符串类型数组,引用类型,值类型,2023/8/31,10,2.2.1 值类型,值类型可以分为简单类型、结构类型和枚举类型。1简单类型 简单类型分整数类型、浮点类型、decimal类型和bool类型。,2023/8/31,11,简单类型:整型,sbyte型为有符号8位整数byte型为无符号16位整数short型为有符号16位整数ushort型为无符号
7、16位整数int型为有符号32位整数uint型为无符号32位整数long型为64位有符号整数ulong型为64位无符号整数char字符型为一个单Unicode 字符,16位长注意:在C中,int不再取决于一个机器的字(word)的大小,而long被设成64位。,2023/8/31,12,简单类型:浮点型,float:取值范围在 1.5x10-45 3.4x1038之间,精度为7位数。double:取值范围在 5.0 x10-324 1.7x10308之间,精度为 1516 位数。,2023/8/31,13,简单类型:小数型,小数型是一种高精度、128位数据类型,它打算用于金融和货币的计算。当定
8、义一个变量并赋值给它时,使用 m 后缀以表明它是一个小数型:decimal decMyValue=1.0m;如果省略了m,在变量被赋值之前,它将被编译器认作double型。,2023/8/31,14,结构类型,2结构类型 结构类型是一种复合数据类型,用于将多个不同类型的成员组合为一种新的类型。结构的声明使用struct关键字。如下所示:,2023/8/31,15,struct Student/定义结构类型Studentpublic string id;public string name;public int age;public string classname;public string
9、telephone;创建结构实例的过程和创建类实例相似,例如:Student stu=new Student();对结构的成员的访问使用点运算符。例如:stu.age=20;,2023/8/31,16,在C#中,结构和类的区别在于结构是一个值类型,而类是一个引用类型。使用结构的主要思想是用于创建小型的对象,可以节省内存,因为没有如类对象所需的那样有额外的引用产生。,2023/8/31,17,1:using System;2:3:struct IP4:5:public byte b1,b2,b3,b4;6:7:8:class Test9:10:public static void Main()1
10、1:12:IP myIP=new IP;13:myIP.b1=192;14:myIP.b2=168;15:myIP.b3=1;16:myIP.b4=101;17:Console.Write(0.1.,myIP.b1,myIP.b2);18:Console.Write(0.1,myIP.b3,myIP.b4);19:,2023/8/31,18,3枚举类型 枚举类型是一组逻辑上密不可分的整数值。枚举的声明使用Enum关键字。例如:enum Weekday/定义枚举类型 weekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday 在
11、枚举类型中,第一个枚举数的默认值为0,后面每个值依次递增1。当然,也可以使用赋值语句显式地为枚举中的常量赋值。访问枚举需要使用点运算符。,2023/8/31,19,2.2.2 类,类是面向对象编程的基本构造块,是一种包含数据成员、函数成员和嵌套类型的数据结构。类的数据成员有常量、域和事件。函数成员包括方法、属性、操作符、构造函数和析构函数。类支持继承机制,通过继承、派生可以扩展类的数据成员和函数方法,进而达到代码重用和设计重用的目的。,2023/8/31,20,1.类的定义格式为:属性 类修饰符 class 类名类体 其中,类修饰符包括:new、abstract、sealed、public、p
12、rotected、internal、private。类体用于定义类的成员,类的成员中可以包含数据成员和函数成员。,2023/8/31,21,2.创建类的实例 在定义了类之后,就可以通过new运算符来创建类的实例(即对象),类实例就是类类型的变量,其创建格式为:类名 实例名即变量名=new 类名(参数);实际上,类的实例的创建中,运算符new通过调用类的构造函数完成类的初始化工作。,2023/8/31,22,3.类的成员 类的成员分为两大类,类本身定义的成员和从基类继承来的成员。类成员包括函数成员和数据成员。可以包含可执行代码的成员统称为该类的函数成员,一个类的函数成员包括:方法、属性、事件、索
13、引器、运算符、实例构造函数、析构函数和静态构造函数。数据成员包含类要处理的数据,它包括常数和字段。在程序中,对类的成员的访问要使用点运算符“.”完成。,2023/8/31,23,(1)类成员访问修饰符 类成员访问修饰符用于指定类成员的可访问性。C#共有public、private、protected和internal四个类成员访问修饰符。(2)静态成员与实例成员 类的成员要么是静态成员,要么是实例成员。当用static修饰符定义成员时,得到静态成员,静态成员属于类,为这个类的所有实例所共享;不用static修饰符定义的成员,称为实例成员,实例成员属于类的实例。,2023/8/31,24,4.构
14、造函数和析构函数 构造函数是类的特殊函数成员,它主要用于为对象分配空间,完成对象的初始化工作。具有以下特点:构造函数的名称与类的名称相同。构造函数可以具有参数,但没有返回值。构造函数在对象定义(即创建对象)时自动被调用。在类中没有定义该类的构造函数时,则编译系统会自动生成一个默认的构造函数,该函数是一个不带参数、函数体为空的函数。构造函数可以重载,但不能继承。构造函数可分为实例函数和静态构造函数。,2023/8/31,25,析构函数也是类的特殊函数成员,它的主要作用是释放类的实例,它具有以下特点:析构函数的名字与类名相同,但其名称前加一“”符号。析构函数不能带参数,也没有返回值。当撤消对象时,
15、系统自动调用析构函数。析构函数不能被继承,也不能被重载。,2023/8/31,26,5.类的方法 方法是表现类或对象行为的函数成员。类中方法的声明的格式如下:属性集 方法修饰符 返回值类型 方法名(形参列表)方法体 其中,方法的修饰符主要有:new、public、protected、internal、private、static、virtual、sealed、override、abstract、extern。,2023/8/31,27,用修饰符static定义方法时,表示该方法为静态方法。未用修饰符static定义的方法为实例方法。静态方法不对特定实例进行操作,不与实例相关联,它属于类,与类相
16、关联,所以调用静态方法不需要创建类实例。要调用类的静态方法,只需要类名和方法名,中间加上圆点“.”运算符即可。静态方法只能访问类的静态成员,访问非静态成员是错误的。实例方法属于类的实例,可对类的某个特定实例进行操作,调用实例方法需要通过类的实例,格式是“实例名.方法名”,实例方法可以访问类中的任何成员。,2023/8/31,28,6.字段与属性(1)字段 字段就是类中声明的一种数据成员,即与对象或类相关联的变量。根据在类中定义字段时所用到的修饰符的不同,可将字段分为:静态字段、实例字段、只读字段。,2023/8/31,29,静态字段:用static修饰符声明的字段称为静态字段,静态字段属于类,
17、而不属于类的实例。实例字段:未用static修饰符声明的字段称为实例字段,实例字段属于类的实例,即类的每个实例拥有自己的字段。只读字段:用readonly修饰符声明的字段为只读字段,只读字段实质上是特殊的实例字段,它的特殊性表现在只读字段只能在字段声明时或在构造函数中赋值。在其他地方都不能改变只读字段的值。,2023/8/31,30,(2)属性 属性用于刻画对象的特征或表示对象的状态。属性与字段不同,它不表示存储位置。相反,属性有访问器。这些访问器指定在它们的值被读取或写入时需要执行的语句。因此,属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。给属性赋值时使用set访问器,
18、set访问器始终使用value关键字设置属性值。获取属性值时使用get访问器,get访问器通过return返回属性的值。在访问声明中,如果只有get访问器,表示是只读属性;如果只有set访问器,表示只写属性;如果既有get访问器,也有set访问器,表示读写属性。,2023/8/31,31,7.类的继承、派生和多态性 继承是面向对象的程序设计的一个重要特征,它允许在已有类的基础上创建新类,新类从已有类中继承成员,而且可以重新定义或加进新成员,从而形成类的层次或等级。一般称被继承的类为基类或父类,而称继承后产生的类为派生类或子类。,2023/8/31,32,C#中的继承有如下重要特性:只允许单继承
19、,即派生类只能有一个基类。继承是可以传递的,如果类C从类B派生,而类B从类A派生,那么类C就会既继承在类B中声明的成员,又继承在类A中声明的成员。派生类扩展它的直接基类,即派生类可以添加新的成员,但不能删除从基类继承的成员。基类的构造函数和析构函数不能被派生类继承。派生类可以隐藏基类的成员,如果在派生类中声明了与基类同名的新成员时,基类的该成员在派生类中就不能被访问到。,2023/8/31,33,(1)派生类的声明类的声明格式为:属性 类修饰符 class 类名:基类类体 可以看出,在派生类的声明中,通过在类名的后面加上冒号“:”和基类的名称表示继承。派生类声明中的其他部分与一般类的声明方法中
20、的规定相同。,2023/8/31,34,(2)base关键字 在有关继承和派生的程序设计中,常用到一个关键字base,base关键字用于从派生类中访问基类的成员,它有两种基本用法:指定创建派生类实例时应调用的基类构造函数,用于调用基类的构造函数完成对基类成员的初始化工作。在派生类中访问基类成员。,2023/8/31,35,(3)多态性 多态性是指不同对象收到相同消息时,会产生不同动作。从而实现“一个接口,多种方法”。C#支持两种多态性。第一种是编译时多态性,是在程序编译时就决定如何实现某一动作,它通过方法重载和运算符重载实现。编译时多态性在编译时就知道调用方法的全部信息。第二种是运行时多态性,
21、是在运行时动态实现某一动作,它通过继承和虚成员实现。,2023/8/31,36,对于类中的方法(函数成员),若声明时加上virtual修饰符,则称该方法为虚方法,反之称为非虚方法。virtual修饰符不能与修饰符static、abstract和override一起使用。虚方法重载时要求方法名称、方法参数类型、方法参数、方法参数顺序、方法返回值类型都必须与基类中虚方法完全一样。在派生类中重载虚方法时,要加上override修饰符。,2023/8/31,37,8.抽象类与密封类(1)抽象类 抽象类表示一种抽象的概念,用来为它的派生类提供一个公共接口。在声明类时,加上abstract修饰符时就表示声
22、明该类为抽象类。抽象类只能作为其他类的基类,不能用该类定义对象,即不能实例化。(2)密封类 在声明一个类时,加上sealed修饰符时就表示声明该类为抽象类。抽象类与密封类是互斥的,因此修饰符sealed与abstract不能同时使用。密封类是不能被继承的。,2023/8/31,38,9.object类和string类 object类和string类是在C#编程中经常用到的两个类:(1)object类 object类是所有其他类型的基类,在C#中,所有类型都是直接或间接地从object类型中派生而来的。因此,一个object类的变量可以赋予任何类型的值。(2)string类 string类型专门
23、用于对字符串的操作,它对应的系统类型为System.String。,2023/8/31,39,2.2.3 接口,接口是一组抽象的方法,用来定义类型与使用该类型的用户之间的协定。一个接口可以从多个基接口继承,而一个类或结构可以实现多个接口。接口和类一样,可以有方法、属性和事件等成员。但与类不同的是,接口仅仅提供成员的声明,并不提供成员的实现。接口成员可以在具体的类或结构代码中实现。因此,一个接口定义一个协定,实现接口的类或结构必须遵守其协定。,2023/8/31,40,1.接口的定义接口的定义格式为:属性 接口修饰符 interface 接口名:基接口接口体 其中,关键字interface、接口
24、名和接口体是必需项,其他项是可选项。接口修饰符包括:new、public、protected、internal、private。接口体用于定义接口的成员。接口支持多继承。在接口名后可以列举一个或多个继承接口,相互之间以逗号分隔。,2023/8/31,41,2.接口的实现 当希望类成员展示某些特性时,可以将这些成员分组在接口中,然后在类或结构中实现。,2023/8/31,42,interface Secret/定义接口类型Secretvoid Encrypt();void Unencrypt();class Message:Secret/在类Message中实现了接口Secretpublic v
25、oid Encrypt()public void Unencrypt()本例中,类Message实现了接口Secret中声明的所有方法。,2023/8/31,43,一个接口声明一个只有抽象成员的引用类型。这就暗示了不能实例化一个接口,只能实例化一个派生自该接口的对象。interface IFacevoid ShowMyFace();不能从这个定义实例化一个对象,但可以从它派生一个类。,class CFace:IFacepublic void ShowMyFace()Console.WriteLine(implementation);,2023/8/31,44,2.2.4 委托,委托(deleg
26、ate)用来封装带有特定签名和返回类型的方法,可以在委托中封装任何匹配的方法(在C+或者其他语言中,实现这一点需要使用函数指针或成员函数指针。与函数指针不同,委托是面向对象的,而且是类型安全和可靠的)。实际上,C#中的委托和C/C+中的函数指针非常相似,使用委托可以把委托内部方法的引用封装起来,然后通过它使用委托引用的方法。特性:(1)就是不需要知道被引用的方法属于那一个类对象,只要函数的参数个数与返回类型与委托对象一致。(2)定义复合委托对象。只有同样类型的委托才能够复合起来。+定义复合委托对象-从一个复合委托中去掉一个委托对象。,2023/8/31,45,1.委托的定义 委托的定义格式为:
27、属性 委托修饰符 delegate 返回值类型 标识符(参数列表)其中,委托修饰符包括:new、public、protected、internal、private;标识符为新声明的委托类型;返回值类型和参数列表为所封装的方法的返回值类型和参数列表,而且参数列表的类型和顺序都要与所封装方法的参数相同。,2023/8/31,46,2.创建委托的实例 在定义了委托之后,就可以和类的实例化一样,通过new运算符来创建委托的实例(即对象),传入与返回类型和签名都匹配的方法。格式如下:委托名 实例名=new 委托名(参数);其中,参数有三种情况:(1)类的静态方法名(2)类实例(即对象)的实例方法名(3)
28、另一个委托,2023/8/31,47,delegate string MyDelegate();public class MyClass public string SayHello()return“Hello the world!”;public class TestMyClasspublic static void Main(string args)MyClass myClass1=new MyClass();MyDelegate myDelegate1=new MyDelegate(myClass1.SayHello);/下面就使用myDelegate1代替对象myClass1的SayH
29、ello方法Console.WriteLine(myDelegate1();/输出结果为hello the world!/调用myClass1.SayHello();效果相同,2023/8/31,48,using System;delegate void MyDelegate(string s);public class MyClass public void SayHello(string who)System.Console.WriteLine(who+hello!);public void SayGoodBye(string who)System.Console.WriteLine(wh
30、o+good bye!);public class TestMyClass public static void Main(string args)MyClass myClass1=new MyClass();MyDelegate myDelegate,myDelegate1;myDelegate=new MyDelegate(myClass1.SayHello);myDelegate1=new MyDelegate(myClass1.SayGoodBye);myDelegate+=myDelegate1;/这样调用myDeletage就相当于同时调用了myClass1.SayHello和my
31、Class1.SayGoodByemyDelegate();/执行结果输出 hello!good bye!,2023/8/31,49,2.2.5 事件,事件就是当对象上发生某种事情时,对象向其客户端通知操作发生的方法。触发事件的对象叫事件发送方,捕获事件并对其作出响应的对象叫做事件接收方。由于事件发送方事先不知道哪些对象或方法将处理它引发的事件,所以,需要在发送方和处理方之间使用一个媒介来联系。在C#中,使用委托作为这个纽带。在发布事件的类中定义用委托声明的事件,在事件接收方定义响应事件的事件处理方法,事件和方法通过委托进行关联。,2023/8/31,50,事件本质上是类中的一个委托类型数据成
32、员,在类中声明事件有两步。(1)必须声明该事件的委托类型。如:public delegate void EventHandler(object sender,EventArgs e);该委托定义了事件发生后,将调用的事件处理方法的参数列表。(2)使用Event关键字声明事件本身,格式为:属性 修饰符 event委托类型 事件名,2023/8/31,51,using System;class Program static void Main(string args)Console.Write(Please input a number:);MainMethod m=new MainMethod(
33、);m.NumberAdded+=new MainMethod.EventDelegate(OutputResult);m.Add(int.Parse(Console.ReadLine();Console.ReadKey(false);static void OutputResult(object sender,EventArgs e)Console.WriteLine(Some Number were added!);public class MainMethod public delegate void EventDelegate(object sender,EventArgs e);pu
34、blic event EventDelegate NumberAdded;public int Result;public void Add(int x)Result=x+55;if(NumberAdded!=null)NumberAdded(this,new EventArgs();,2023/8/31,52,2.2.6 数组类型,数组类型是具有相同类型的一组数据,存放在相邻的内存块中。在C#中,数组中的元素可以是任何数据类型。声明数组 数组的初始化 数组元素的访问,2023/8/31,53,C中数组是引用类型,C定义整型数组方式是:int intArray=1,2,3;或int intAr
35、ray=new int10 int,a2=new int 10,20;/定义二维数组还可以定义“参差不齐”的数组:int var=new int 3;var0=new int1,2,3;var1=new int1,2,3,4,5,6;var2=new int1,2,3,4,5,6,7,8,9;注意,int,a和int a的区别:前者定义了一个二维固定数组,后者定义了一个二维可变数组。只是它们都还没被分配空间和初始化。int var=new int34;是错误的。,2023/8/31,54,2.3 运算符,运算符用于操纵信息。C#提供了大量的运算符,用于进行各种类型数据的运算。根据操作数的数量,
36、运算符可划分为三类:一元运算符、二元运算符和三元运算符。另外,还可以通过所进行的运算类型来划分,包括关系运算符、逻辑运算符、算术运算符、赋值运算符等。,2023/8/31,55,2.3.1 常用运算符,常用的运算符主要包括:算术运算符、赋值运算符、关系运算符、位运算符、逻辑运算符、条件运算符。1算术运算符。用于执行算术运算。2赋值运算符。用于给变量赋值。C#中,赋值分简单赋值(=)和复合赋值两种。3关系运算符。用来创建一个表达式,比较两个对象并返回一个布尔值(true或者false)。,2023/8/31,56,4逻辑运算符。用于计算多个比较运算符组成的表达式。C#提供的逻辑运算符有逻辑与(&
37、)、逻辑或(|)和逻辑非(!)。5位运算符。对数据二进制位进行运算。6条件运算符(?:),也称三元运算符。其语法为:条件表达式?表达式1:表达式2,2023/8/31,57,7其他运算符(1)sizeof()运算符 用于获取一个值类型的字节大小。(2)typeof()运算符 用于获取系统原型对象的类型。该运算符应用的对象是类型名称,结果表达式是一个System.Type对象(3)new运算符 用于创建一个新的类型实例,它可以创建类类型、值类型、数组类型和委托类型的实例。,2023/8/31,58,2.3.2 运算符的优先级,运算符的优先级控制着表达式的求解顺序。,2023/8/31,59,2.
38、4 控制语句,C#控制语句主要分为以下三部分:选择语句循环语句跳转语句,2023/8/31,60,2.4.1 选择语句,在C#中,有两种选择语句,即if语句和switch语句。都是先对条件进行判断,再根据判断结果执行不同的分支。1if语句 if语句是条件判断语句,用于测试某个表达式,当该表达式的值为true时,执行一条或多条后继语句。格式如下:if(bool表达式)语句块1/要处理的程序 else语句块2/要处理的程序,2023/8/31,61,2switch语句 switch语句用于多分支选择。如果想把一个变量或表达式与许多不同的值进行比较,并根据不同的比较结果执行不同的程序段,应用swit
39、ch语句就会使结构简明清晰。,2023/8/31,62,格式如下:switch(测试表达式)case 值1:要处理的语句块1;case 值2:要处理的语句块2;Default:默认的语句块n;,2023/8/31,63,2.4.2 循环语句,循环语句用于重复执行一行或多行代码。C#提供了四种风格的循环语句,即while语句、dowhile语句、for语句和foreach语句。1while语句 while语句执行一个语句或者一个语句块,直到指定的条件表达式的值取false为止。格式如下:while(条件)循环体,2023/8/31,64,2dowhile语句 dowhile语句与while语句基
40、本类似,不同点在于其条件测试要在每次循环体执行后才进行,所以,无论是否满足条件,至少执行一次循环体。格式如下:do 循环体 while(条件);/注意语句后面的分号不可缺少,2023/8/31,65,3for语句 for语句执行一个语句或者一个语句块,直到指定的条件表达式的值为false为止。在预先知道循环次数的情况下,使用for循环是比较方便的。格式如下:for(起始值;条件;累加数值)循环体,2023/8/31,66,4foreach语句 foreach语句常用在数组和集合中对元素进行迭代。它是将集合中的每一个项目代入变量中进行处理。当然,变量也是根据集合项目的类型进行声明的。格式如下:f
41、oreach(对象类型变量 in 集合)循环体,2023/8/31,67,2.4.3 跳转语句,跳转语句用于将程序的执行控制从一个位置转移到另一个位置。常用的跳转语句有break、continue和goto语句。(1)break语句用于终止它所在的最近的封闭循环或条件语句。格式:break;(2)continue语句用于结束当前的重复过程,返回循环语句的开始处。格式:continue;(3)goto语句用于将程序控制权直接传递给标记语句。格式:goto 标记;,2023/8/31,68,2.4.4 异常处理,C#中使用try语句来捕获和处理程序执行过程中产生的异常。try语句通常包含try子句
42、、catch子句和finally子句。try子句包含可能抛出或出现异常错误的代码段;catch子句包含用来处理或响应异常错误的代码段;无论try子句是否引发异常错误,finally子句总会被执行,这样做的好处是在finally子句中可以进行必要的清除操作,如关闭文件、释放对象占用的资源等。,2023/8/31,69,try语句有三种可能的形式:(1)try catch(2)try finally(3)try catch finally 其中,catch子句可以出现多次。其异常处理的过程是:当try子句中的程序代码产生异常错误时,程序会按catch子句出现的先后顺序查找第一个能处理该异常的cat
43、ch子句,并使程序的流程跳转到该catch子句,并执行其中的程序代码段。,2023/8/31,70,2.5 命名空间,命名空间(namespace)是C#中重要的一部分。本节介绍命名空间的概念,以及如何创建并使用命名空间。,2023/8/31,71,2.5.1 命名空间的概念,命名空间将相关的类归入到一个层次结构中,更好地组织类,避免命名冲突而且便于使用。微软.NET Framework类库中包含了80多个常用命名空间,如System、System.IO,System.Data等。一个命名空间限制了名字的范围,使它只在定义的名字空间中才有意义。,2023/8/31,72,2.5.2 namespace和using关键词,1namespace关键字 创建新的命名空间,可以使用namespace关键字。关键字后跟命名空间的名字,将此命名空间中的对象用大括号括起来。Namespace name.name1type-declarations/声明类型,2023/8/31,73,2using关键字 using指令可以进行方法的特性调用,而不必一定使用完全限定名。格式如下:using 命名空间名;这样,在声明某个类型的实例时,直接用此类型的名称即可。,2023/8/31,74,欢迎各位专家、老师和同学们提出宝贵意见和建议!谢 谢!,
链接地址:https://www.31ppt.com/p-5896190.html