- //声明委托
- delegate void Del(string s);
- //测试类
- class TestClass
- {
- //静态方法
- static void Hello(string s)
- {
- System.Console.WriteLine(" Hello, {0}!", s);
- }
- //静态方法
- static void Goodbye(string s)
- {
- System.Console.WriteLine(" Goodbye, {0}!", s);
- }
- //主函数
- static void Main()
- {
-
- Del a, b, c, d;
- //创建一个委托,并且指向Hello方法(这里都是在同一个类中,所以静态方法不用class为前缀)
- a = Hello;
-
- //创建一个委托,并且指向Goodbye方法(这里都是在同一个类中,所以静态方法不用class为前缀)
- b = Goodbye;
- //创建一个委托,包含a和b委托的方法
- c = a + b;
- //从c委托中移除a委托,只剩下b委托,指向d委托
- d = c - a;
-
- //显示出来
- System.Console.WriteLine("Invoking delegate a:");
- a("A");
- System.Console.WriteLine("Invoking delegate b:");
- b("B");
- System.Console.WriteLine("Invoking delegate c:");
- c("C");
- System.Console.WriteLine("Invoking delegate d:");
- d("D");
- }
- }
复制代码 委托对象的一个用途在于;
可以使用 "+"(英文加号)运算符将它们分配给一个要成为多路广播委托的委托实例。组合的委托可调用组成它的那两个委托,例如上面代码中的C委托; 注意:只有相同类型的委托才可以组合。
"-"(英文减号) 运算符可用来从组合的委托移除组件委托,例如上面的d委托。 |