委托的组合与分解

     委托变量可以代表某一函数,使用委托变量就相当于调用一个函数。如果仅是这么简单,

那么直接调用函数不就行了吗?为什么还要引入委托这一特性?

      事实上,委托不仅可以代表一个函数,还可以组合一堆的函数,然后批量执行它们。

      请看示例程序 UseDelegate,它展示了委托变量之间的组合与分解。

      项目中定义了一个委托类型 MyDelegate:

          delegate void MyDelegate(string  s);          

      接着定义了一个拥有两个静态方法的类 MyClass:

      请仔细看以下代码:

      上述代码中委托变量  c组合了两个委托变量   a和    b,因而,它拥有两个函数,当执行

“c("c=a+b");”时,将导致 MyClass类的两个静态函数都被执行。

      象 c这样的委托变量又称为多路委托变量

      可以用加法运算符来组合单个委托变量为多路委托变量。类似地,也可以使用减法运算

符来从一个多路委托变量中移除某个委托变量。

      上述示例的运行结果为:

调用委托变量  a:

您好, a!

调用委托变量  b:

再见, b!

调用委托变量  c:

您好, c=a+b!

再见, c=a+b!

调用委托变量  d:

再见, d=c-a!

posted on 2015-02-26 14:19  星空丶那一抹流光  阅读(187)  评论(0编辑  收藏  举报

导航