正文

C#Doorstep2面向对象程序设计篇72008-04-03 16:40:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xman/33902.html

分享到:

委托    委托属于引用类型,其作用类似于 C++中函数指针的用途。与函数指针不同,委托实例独立于它所封装的方法的类;最主要的是那些方法与委托的类型是兼容的。另外,函数指针只能引用静态函数,而委托可以引用静态和实例方法。委托最大的特点是它不知道或不关心自己所引用的对象的类,任何对象中的方法都可以通过委托动态的调用,只要方法的参数类型和返回类型必须和委托匹配。 using System; public delegate void D(int x); class C {     public static void F1(int i)     {         Console.WriteLine("C.F1: " + i);     }     public void F2(int i)     {         Console.WriteLine("C.F2: " + i);     } } class Test {     static void Main()      {          D cd1 = new D(C.F1);        //此处为静态方法的调用          C c = new C();          D cd2 = new D(c.F2);        //此处为非静态方法的调用              D cd3 = new D(cd2);             D cd4 = cd1+cd2+cd3;          D cd5=cd4-cd3;          Console.WriteLine("delegate cd1:");cd1(1);          Console.WriteLine("delegate cd2:");cd2(2);          Console.WriteLine("delegate cd3:");cd3(3);          Console.WriteLine("delegate cd4:");cd4(4);          Console.WriteLine("delegate cd5:");cd5(5);          Console.ReadKey();      } }   结果分析: D cd1 = new D(C.F1); cd1(1); 此处委托使用静态引用,cd1将调用C类的F1方法完成自己的功能。 C c = new C(); D cd2 = new D(c.F2); cd2(2); 此处委托使用实例引用,cd2将调用C类实例c的F2方法完成自己的功能。     D cd3 = new D(cd2); cd3(3); 利用已有的方法构造新的方法,即cd3引用cd2方法。 D cd4 = cd1+cd2+cd3; cd4(4); 此处cd4为调用多种方法的多重委托,它可以维护一个方法列表,这个列表可以成为委托的调用列表,也即委托链。 D cd5=cd4-cd3;cd5(5); 此处cd4为从cd4中移除cd3后得到新的方法,即cd5= cd1+cd2。 (To be continued)

阅读(2782) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册