学习笔记之---C#中的委托与事件
来源:互联网 发布:135端口入侵教程 编辑:程序博客网 时间:2024/06/05 10:26
首先抛砖引玉,谈一下本人对委托和事件的理解,然后再引用jimmy.zhang所讲的委托和事件的例子,希望能对还不是很清楚委托和事件的朋友有所帮助。
本人的理解:
委托:
1、 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性.
2、 委托只是定义了一个方法的原型.它的实现包含:
- 声明委托类型
- 定义与委托类型符合的方法
- 声明委托变量
- 初始化委托实例
- 调用委托
3、 注意: 定义一个委托是指定义一个新类,委托实现为派生于基类System.MulticastDelegate的类, System.MulticastDelegate又派生于基类System.Delegate.C#编译器知道这个类,会使用其委托语法,因此我们不需要详细了解此类内部实现,这是C#与基类共同合作,使编程更易完成.
4、 注意: 在术语方面有个问题,类有两个不同的术语中:‘类’表示广泛的定义,‘对象’表示类的实例,但委托只有一个术语,在创建委托实例时,所创建的委托实例仍称为委托.
5、 给定委托的实例可以表示任何类型的任何对象上的实例方法或静态方法---只要方法的签名与委托符合.
事件:
1、 事件处理程序不能有返回值.
2、 事件注册方法类似于多播委托,可多播委托是根据注册方法时顺序执行,而事件却没有,方法执行顺序不可预估.
3、 .NET建议标准声明事件的委托必须无返回值,则有object, EventArgs 两参数.第一个参数是表示引发事件的对象,第二个参数是包含有关事件的其他有用信息的对象,可记录发生事件现场.可直接使用系统提供的 EventHandler.
4、 虽然声明事件时使用public修饰符,但编译成IL时仍转换成private.
5、 事件是委托的进一步封装.
他人的精华:
想必大家都知道网上一些讲委托和事件的例子,本人认为jimmy.zhang的这篇写的最好,最容易让还不是很清楚委托与事件的朋友豁然开朗。原文地址:http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
- 学习笔记之---C#中的委托与事件
- C#委托与事件学习笔记
- c# 委托与事件 学习笔记
- C#学习笔记(三)—–C#高级特性中的委托与事件:关于事件
- C#委托与事件之学习
- C#学习笔记(三)—–C#高级特性中的委托与事件(上)
- C#学习笔记(三)—–C#高级特性中的委托与事件(中)
- C#学习笔记(三)—–C#高级特性中的委托与事件(下)
- 【unity3d-C#学习笔记】C#中的委托和事件
- C#中的委托与事件
- C#中的委托与事件
- C#中的委托与事件
- C#中的委托与事件
- c#中的委托与事件
- c#中的委托与事件
- C#中的委托与事件
- C#中的委托与事件
- C#中的委托与事件
- Android 删除手机联系人,添加手机联系人,更新手机联系人信
- 应聘时漂亮的回答,一生受益的语言
- 关于py2exe的setup.py的部分释疑
- 简单的批处理切换目录
- jsp四种对象的作用范围
- 学习笔记之---C#中的委托与事件
- 设计模式笔记4:简单工厂模式(Simple Factory Pattern)
- POJ 1926 Pollution 直接模拟也能过!!
- Asp.net中后台*.cs与前台JS脚本之间相互调用的几点心得
- MappedByteBuffer的使用
- 内核char设备号的注册与注销
- 大话设计模式之-----装饰模式
- UIKit各类概述
- 什么是MapReduce?