《C#类设计手册》读书随笔(3)

Programmer To Programer 丛书
C# Class Design Handbook
Richard Conway, Teun Duynstee等著
清华大学出版社



star.gif事件和委托
基于事件的编程是.NET Framework的基石
.NET Framework中的事件机制使用了委托(回调)
事件作为一种常用的方法来解除事件源对象(生成事件的对象)与事件接收器对象(接受事件通知的对象)之间的耦合。

委托 类似于应用程序中指向对象中方法的指针
3个步骤:
1 声明委托类型
2 创建委托对象,并将该对象绑定指定方法上
3 使用委托对象来调用方法

star.gif.NET Framework支持两种类型的委托
单播委托:允许一个对象上调用一个方法
多播委托:允许在不同对象上调用一系列方法,维护一个调用对象

使用多播委托的步骤:
1 定义一个委托类型
2 编写具有相同签名方法作为委托
3 创建委托对象,将它绑定到需要通过委托调用的第一个方法
4 创建另一个委托对象,绑定到下一个需要调用的方法
5 System.Delegate类的Combine方法,合并成一个集成的多播委托

74_74.gif异步委托  可以在后台线程中调用的方法
调用委托实例三种方式:
1 同步调用,等待方法执行完毕,最常见
2 异步调用,等待方法执行完毕, EndInvoke(),但在方法执行完毕之前调用
3 异步调用,注册一个回调方法,一旦执行完毕,给出通知

star.gif事件的实现  使用委托存储订阅的事件处理方法,典型的Observer设计模式的一种实现
每个事件,必须指定下面两项内容:事件名,事件的签名(参数列表)

System.EventHandler 一个内置的委托
事件不能有返回类型,只能从事件源对象到事件接收方对象的单向信息流

静态事件 较少见,相对于一般事件

star.gif定义自己注册的方法
大多数情况下不需要定义定制的注册方法,但这种技术可以使代码最简洁和快速。
Framework中,大多数控件都使用定制的注册方法。

star.gif基类和子类不能引用同一个委托
继承和多态性  所有的面向对象语言都支持,多态性由继承支持,把一种类型的对象视作另一种类型的实例的多态性

star.gif基类定义为virtual,派生类就可以重写基类的操作
标记为非虚的方法不能重写
操作声明为virtual,可以重写该实现
操作声明为abstract,必须重写该实现

star.gif类 继承自System.Object
结构 继承自System.ValueType,继承自System.Object转换成它实现的接口类型,对于引用类型代替类型要小心,不能调用接口不支持的任何对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值