Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06

上传人:E**** 文档编号:89351150 上传时间:2019-05-23 格式:PPT 页数:17 大小:205KB
返回 下载 相关 举报
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06_第1页
第1页 / 共17页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06_第2页
第2页 / 共17页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06_第3页
第3页 / 共17页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06_第4页
第4页 / 共17页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06》由会员分享,可在线阅读,更多相关《Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch06(17页珍藏版)》请在金锄头文库上搜索。

1、第6章 域、属性与事件 本章要点: 域的定义及使用 属性的概念 委托的概念与使用 事件,6.1 域,域(Field)又称成员变量(Member Variable),它表示类属性的存储位置,是C#类中不可缺少的一部分。域的声明格式如下: 域修饰符 域类型 域名 域的修饰符包括new、public、protected、internal、private、static、readonly等,分别代表不同的含义。,6.1 域,6.1.1 域的初始化 C#编译器缺省将每一个域初始化为它的默认值。 C#推荐的做法是在实例化对象的同时对对象域进行初始化。 C#中对域进行初始化有两种: 声明的同时进行初始化 在构

2、造器内进行初始化。 域的默认初始化将分为两种情况。对于静态域,类在装载时对其进行初始化;而对于非静态域,在类的实例创建时进行初始化。在默认的初始化之前,域的值是不可预测的。,6.1 域,6.1.2 只读域与readonly关键字 域的声明中如果加上了readonly修饰符表明该域为只读域。只读域只能在域的定义中和它所属类的构造函数中进行修改,在其它情况下是只读的。 只读域具有如下特征: 只读域只能在初始化(声明初始化或构造器初始化)的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。 只读域可以是实例域也可以是静态域。 只读域的类型可以是C#语言的任何类型。,6.2 属性,属性

3、是对现实世界中实体特征的抽象,它提供了一种对类或对象的特性的访问机制。属性所描述的是状态信息,在类的某个实例中,属性的值表示该对象相应的状态值。 属性是C#中独具特色的新功能。通过属性来读写类中的域,这种机制具有一定的保护功能。在其它语言中,对域的访问功能通常是通过实现特定的getter和setter方法来实现的。,6.2 属性,6.2.1 属性的声明 C#中属性采用如下方式进行声明: 属性修饰符 属性的类型 属性名称访问声明 set; get; 属性的修饰符包括: static:静态属性,一个静态属性与特定的实例无关,并且在静态属性的访问符中使用this是错误的。在一个静态属性中包括virt

4、ual、abstract或override 修饰符也是错误的。一个非静态(实例)属性与一个类中特定的实例相关,并且这个实例可以被属性访问符中的this访问。,6.2 属性,6.2.1 属性的声明 virtual:虚拟属性,虚拟属性的执行可以被派生类改变。改变一个继承的虚拟方法执行的过程被称为属性重载。 相反,非虚拟属性的执行是不变的:不管属性是否在所声明的类的实例或派生类的实例中被访问,执行都是相同的。 override:覆盖属性,一个覆盖属性用相同的签名覆盖一个继承的虚拟属性。然而一个虚拟属性声明引入一个新属性,一个覆盖属性声明通过提供这个属性访问符或访问符的新执行来对存在的继承德虚拟属性进

5、行特殊化。,6.2 属性,6.2.1 属性的声明 abstract:抽象属性。一个抽象属性隐含的也是一个虚拟属性。 一个抽象属性声明引入一个新虚拟属性,但是没有提供属性访问符或访问符的执行。作为替代,非抽象派生类需要为访问符或覆盖的属性的访问符提供它们自己的执行。因为一个抽象属性声明的访问符不提供实际执行,它的访问符主体就完全由分号组成。 抽象属性声明只被允许存在于抽象类中,一个抽象属性声明包括static或virtual修饰符是错误的。,6.2 属性,6.2.1 属性的声明 根据get和set访问器是否存在,属性可分成如下类型。 读写(read-write)属性:同时包含 get 访问器和

6、set 访问器的属性。 只读(read-only)属性:只具有 get 访问器的属性。将只读属性作为赋值目标会导致编译时错误。 只写(write-only)属性:只具有 set 访问器的属性。除了作为赋值的目标外,在表达式中引用只写属性会出现编译时错误。,6.2 属性,6.2.2 属性的访问 在属性的访问声明中,对属性的读操作用get访问符标出,而对属性的写操作用set访问符标出。 请参考示例,体会属性的访问。 由于属性的set访问器中可以包含大量的语句,因此可以对赋予的值进行检查及进行一些其他必要操作,如果值不安全或者不符合要求,就可以进行提示。这样就可以避免因为给类的数据成员设置了错误的值

7、而导致的错误。,6.2 属性,6.2.2 属性的访问 class age private int _age; /私有int类型域_age public int AttributeAge /定义AttributeAge属性封装 _age域 Get /Get访问器 return _age; set /set访问器,在设置属性值时进行有效性验证 if(value 0) Console.WriteLine(“输入值非法!“); else _age = value; ,6.2 属性,6.2.2 属性的访问 class TestAge static void Main(string args) age A

8、ge = new age(); Console.WriteLine(“Please input age“); /设置属性值,可以通过输入非法值检验其有效性验证功能 Age.AttributeAge = Int32.Parse( Console.ReadLine(); /输出属性值 Console.WriteLine(“Age is 0“,Age.AttributeAge); Console.ReadLine(); ,6.3 事件,6.3.1 委托 委托是一种特殊的类型(class),用途是来实现对一种方法的“封装”。在某种事件发生时,自动调用该方法。好处显然易见,它使用户可以自定义自己的方法实

9、现,通过封装,CLR会在相应事件激发时调用你定义的方法,实现自定义的功能。 C#中的委托类似于C或C+中的函数指针,但两者有本质区别:C或C+不是类型安全的,但C#中的委托是面向对象的,而且是类型安全的。从某种角度来讲,委托是一个引用类型,用来封装带有特定签名和返回类型的方法。,6.3 事件,6.3.1 委托 1.声明委托 C#使用关键字delegate来声明委托类型,具体格式如下: 访问修饰符 delegate 结果类型 委托标识符(形参列表); 委托类型可以在声明类的任何地方声明。 2.实例化委托 委托使用new运算符来实例化且新创建的委托实例所引用的对象为以下情形之一: 委托创建表达式中

10、引用的静态方法 委托创建表达式中引用的目标对象(此对象不能为null)和实例方法 另一个委托,6.3 事件,6.3.1 委托 3. 使用委托 实例化一个委托后,可以通过委托对象的名称及放入括号的要传递给委托的参数来调用委托对象。调用委托时,调用表达式的主表达式必须是委托类型的值。 参考示例代码,理解委托,6.3 事件,6.3.2 事件的声明 事件的声明分为两种,声明事件域的格式如下: 事件修饰符 event 事件类型 事件名; 声明事件属性的格式如下: 事件修饰符 event 事件类型 事件名访问符; 其中事件修饰符就是以前常提到的访问修饰符,如:new、public、protected、in

11、ternal、private、static。事件所声明的类型(type)则必须是一个代表delegate类型。而此代表类型应预先声明如: public delegate void EventHandler,6.3 事件,6.3.3 事件的订阅与取消 (1) 订阅事件 事件的订阅是通过为事件加上左操作符“+=”来实现的,如: MyString mystring = new MyString(); mystring.Changed += new EventHandler(mystring_Changed (object sender, EventArgs e); 只要事件被触发,所订阅的方法就会被调用。 (2) 取消订阅 事件的撤消则采用左操作符“- =”来实现的: mystring.Changed -= new EventHandler(mystring_Changed); 请参考示例代码体会事件的用法。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号