委托的组合与分解
委托变量可以代表某一函数,使用委托变量就相当于调用一个函数。如果仅是这么简单,
那么直接调用函数不就行了吗?为什么还要引入“委托”这一特性?
事实上,委托不仅可以代表一个函数,还可以组合“一堆”的函数,然后批量执行它们。
请看示例程序 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!