C#中的委托delegate

委托是对函数原型的包装

            委托的申明:

                   public delegate double MyDelegate (double x)

            委托的实例化:
                   MyDelegated d2 = new MyDelegate(obj.myMethod)

            委托的调用:

                   委托的变量名(参数列表)

                   d2(8.9)

具体在用的时候 

            也就是把方法的参数和返回的不同类型的值进行分类

             以窗体的画图的例子来说:

             可以把实例化的委托封装到一个数组里面:

                    Fun [] funs = {

                                               new Fun(This.Square),

                                               new Fun(Form1.XPlus),

                                               new Fun(Math.cos),

                                               new Fun(Math.Sqrt)

                                          }

C#4.0版本定义了很多的委托

              Action<T1,T2>     Func<T1,T2,Tresult>

              new Func <double,double>(Math.sin);       <参数,返回值>(方法名)

             相当于有了一个统一的模板,然后进行委托的申明,实例化,方便统一的调用。

委托的合并---MultiCastDelegate

             --一个委托包含了多个函数

             --调用委托,就是调用其中的多个函数

             --多个函数的先后顺序没有意义

             --返回值也就没有大大的意义

运算符+ -    +=    -=

              可以动态的增减其中的函数

              提高了程序的灵活性

具体在用的时候

               D   cd1 = new D(C.M1);

               D  cd2=null;

               cd2 += new D(C.M2);

               D cd3= cd1+cd2;           把多个函数都包装起来

委托的相等:

              判断包含的函数是否一样,来判断委托是否相等

总之:

              委托相当于函数指针

              但是类型更加的安全,是引用类型

              且功能更加的强大,有多播的功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值