在之初的C/C++语言中是没有委托这个名词或概念的.那为什么在.NET Framework的框架中出现了这个名词呢?实质又是什么呢?
编程语言虽个有差异,但设计编程思想差别不大.在C/C++设计中遇到的问题、随之设计出的解决办法,我相信在后续的高级语言中也会出现.就看以一种什么的手腕去设计他.
恰巧在C#中的委托,就类似于其他语言函数中的指针.
那么委托和函数指针完全一样吗? 答案是否定.生活中的这样的例子比比皆是,手机就是一个很好的例子.
委托:类型安全的对象.
委托三步曲: 声明、实例化和调用.
delegate void SimpleDelegate();
class Test{
static void F(){
System.Console.WriteLine("Write F");
}
static void Main(){
SimpleDelegate sd=new SimpleDelegate(F);
sd();
}
}
委托使用的注意事项
在C#中,所有的委托都是从System.MulticastDelegate类派生的。
委托隐含具有sealed属性,即不能用来派生新的类型。
委托最大的作用就是为类的事件绑定事件处理程序。
在通过委托调用函数前,必须先检查委托是否为空(null),若非空,才能调用函数。
在委托实例中可以封装静态的方法也可以封装实例方法。
在创建委托实例时,需要传递将要映射的方法或其他委托实例以指明委托将要封装的函数原型(.NET中称为方法签名:signature)。注意,如果映射的是静态方法,传递的参数应该是类名.方法名,如果映射的是实例方法,传递的参数应该是实例名.方法名。
只有当两个委托实例所映射的方法以及该方法所属的对象都相同时,才认为它们是想等的(从函数地址考虑)。
http://blog.163.com/xuanmingzhiyou@yeah/blog/static/14247767620111019115655141/