OOP基础-属性和委托事件

OOP基础-属性和委托事件

ID:41063627

大小:344.51 KB

页数:31页

时间:2019-08-15

OOP基础-属性和委托事件_第1页
OOP基础-属性和委托事件_第2页
OOP基础-属性和委托事件_第3页
OOP基础-属性和委托事件_第4页
OOP基础-属性和委托事件_第5页
资源描述:

《OOP基础-属性和委托事件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、为了实现良好的数据封装和数据隐藏,类的字段成员的访问属性一般设置成private或protected,这样在类的外部就不能直接读/写这些字段成员了,通常的办法是提供public级的方法来访问私有的或受保护的字段。C#提供了属性(property)这个更好的方法,把字段域和访问它们的方法相结合。对类的用户而言,属性值的读/写与字段域语法相同;对编译器来说,属性值的读/写是通过类中封装的特别方法get访问器和set访问器实现的。属性5.5.1属性1在类中属性采用如下方式进行声明:[修饰符]属性的类型名 属性名{get//读访问器{//可执行语句}set/

2、/写访问器{//可执行语句}}属性修饰符有new、public、protected、internal、private、static、virtual、override和abstract共9种。其中读、写属性的过程分别用get访问器和set访问器来表示。若只包含get,此为只读属性;只包含set,则为只写属性。属性声明2【例5-21】字段和属性示例。usingSystem;publicclassStudent{privateintnAge;//私有域publicintAge//属性,用户控制对域的访问{get{returnthis.nAge;}set{i

3、f(value!=this.nAge&&value>0)this.nAge=value;}}示例关键字value接收用户给Age属性所赋的值3staticvoidMain(string[]args){Students=newStudent();s.Age=20;//20传值给value,执行Age属性的set访问器Console.WriteLine(s.Age);//执行Age属性的get访问器,得到返回值}}示例4学生类定义了一个私有字段nAge,也定义了公有属性Age,并包含get和set两个访问器,使其既可读也可写。在属性的get访问器中,用r

4、eturn来返回一个事物的属性值。在属性的set访问器中可以使用一个特殊的隐含参数value。该参数包含用户指定的值,通常用在set访问器中,将用户指定的值赋值到一个类变量中。如果没有set访问器,则表示属性是只读的;如果没有get访问器则表示属性是只写的。示例说明55.6委托和事件委托,顾名思义,就是中间代理人的意思。通俗地说,委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用它所指向的方法。事件是建立在委托基础上的另一个重要特性。从本质上说,事件就是当某个事情发生时,会自动去执行一些语

5、句。事件是特殊化的委托,委托是事件的基础。6委托intMultiply(int,int){….}intDivide(int,int){….}在运行时确定调用哪种方法委托和方法必须具有相同的参数---publicdelegateintCall(intnum1,intnum2);---7定义委托的关键语法[访问修饰符]delegate返回类型委托名(形参表);定义委托类型:委托名委托实例名;委托实例名=new委托名(某个类的方法);声明委托对象:创建委托对象:(确定与哪些方法进行绑定)8委托示例1usingSystem;//委托定义delegateint

6、Call(intnum1,intnum2);classMath{//乘法方法publicintMultiply(intnum1,intnum2){returnnum1*num2;}//除法方法publicintDivide(intnum1,intnum2){returnnum1/num2;}}classTest{staticvoidMain(string[]args){//Math类的对象MathobjMath=newMath();//委托的对象CallobjCall;//将方法与委托关联起来objCall=newCall(objMath.Multi

7、ply);//调用委托实例result=objCall(5,3);System.Console.WriteLine("结果为{0}",result);}}将方法与委托关联起来9定义委托使用关键字delegate:delegateintCall(intnum1,intnum2);再实例化:CallobjCall=newCall(objMath.Multiply);最后调用:objCall(5,3);——相当于调用objMath.Multiply(5,3);委托可以调用多个方法,称为多播,使用+和-运算实现方法的增加和减少。如,在上例基础上添加如下代码:

8、Calld=newCall(objMath.Divide);objCall+=d;objCall(5,3);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。