欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

C#中的委托(delegate)

创建时间:2011年09月09日 18:04  阅读次数:(5586)
分享到:
在C#中取消了指针的概念,对指针恋恋不舍的程序员可以有两种解决方法:
1,声明“非安全”(unsafe)代码段然后在其中使用指针
2,使用C#的一个引用类型——“委托”(delegate)。
“委托”相当与C中的函数指针原型,区别是C#是类型安全的。
“委托”是类型安全的并且完全面向对象的。

生成委托代码的三步骤:
1.生成自定义委托类:delegate int mydel();
2.然后实例化委托类:mydel d = new mydel(MyClass.MyMethod);
3.最后通过实例对象调用方法:int ret = d();

注意:
(1)、在C#中,所有的委托都是从System.Delegate类派生的。

(2)、委托的定义必须放在任何类的外面,
如delegate int mydel()
而在类的方法中调用mydel d = new mydel(MyClass.MyMethod)来实例化自定义委托的实例。

(3)、在创建委托实例时,需要传递将要映射的方法或其他委托实例以指明委托将要封装的函数原型。
注意,如果映射的是静态方法,传递的参数应该是类名.方法名,如果映射的是实例方法,传递的参数应该是实例名.方法名。

(4)、委托隐含具有sealed属性,即不能用来派生新的类型。

(5)、在通过委托调用函数前,必须先检查委托是否为空(null),若非空,才能调用函数。

(6)、只有当两个委托实例所映射的方法以及该方法所属的对象都相同时,才认为它们是想等的(从函数地址考虑)。

(7)、委托最大的作用就是为类的事件绑定事件处理程序。

(8)、多个委托实例可以形成一个委托链,System.Delegate中定义了用来维护委托链的静态方法Combion,Remove,分别向委托链中添加委托实例和删除委托实例。

(9)、在委托实例中可以封装静态的方法也可以封装实例方法。 />  }
}

 z!j媁虘b?僛AQ笅b霳(
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 27+3=? 的结果(结果是:30)
结  果: