所谓委托,可以当作是一个指向函数的指针,但是C#的委托可以同时指向多个函数,也就是支持多路广播。

 

简单的委托示例
 1    class MathClass
 2     {
 3         public delegate int DelClick(int a);
 4 
 5         public static int D1(int input)
 6         {
 7             Console.WriteLine(input);
 8             return input;
 9         }
10 
11         public static int D2(int input)
12         {
13             Console.WriteLine(input+1);
14             return input+1;
15         }
16 
17         public DelClick delClick = new DelClick(D1);
18         public void Click(int a)
19         {
20             Console.WriteLine("委托开始");
21             int i=delClick.Invoke(a);
22             Console.WriteLine("i{0}", i);
23             Console.WriteLine("委托结束");
24              
25         }
26 
27         static void Main()
28         {
29             MathClass m = new MathClass();
30             m.delClick += D2;
31             m.Click(3);
33             Console.ReadLine();
34         }
35     }

 

如上示例,输出的结果如下

委托开始
3
4
i4
委托结束

我们可以看到,当多路广播时,委托返回的是最后一个广播的值。


 

 

posted on 2011-09-25 18:16  135  阅读(346)  评论(0编辑  收藏  举报