委托

委托就是定义了方法的类型,就想"hello" 的类型是String 类型一样。

例如:下面的委托例子

 1 namespace delegate_tesst
 2 {
 3     public delegate void SayDelegate(string name);
 4     public class ClassPeople
 5     {
 6         public void saychinese(string name)
 7         {
 8             Console.WriteLine("你好,"+name );
 9         }
10         public void sayenglish(string name)
11         {
12             Console.WriteLine("hello ,"+name);
13         }
14         public void dowork(string name, SayDelegate MakeSay)//此方法它接收一个SayDelegate类型的方法做为参数
15         {
16             MakeSay(name);
17         }
18     }
19     class Program
20     {
21         static void Main(string[] args)
22         {
23             ClassPeople c1 = new ClassPeople();
24             //委托
25             Console.WriteLine("下面是委托:");
26             SayDelegate saymethod1 = c1.saychinese;
27             SayDelegate saymethod2 = c1.sayenglish;
28             c1.dowork("张三", saymethod1);
29             c1.dowork("zhangsan", saymethod2);
30 
31 
32             //多播委托
33             Console.WriteLine("下面是多播委托:");
34             SayDelegate saymethod = c1.saychinese;
35             saymethod += c1.sayenglish;
36             c1.dowork("zhangsan",saymethod);
37             
38             Console.ReadKey();
39         }
40     }
41 }

我们声明了委托,和多播委托。这里方法的类型就是SayDelegate类型。
他和我们以前定义的对象区别在于:

  以前我们定义的对象都包含数据,而委托包含的只是方法的地址。

posted @ 2013-08-02 16:29  lanacon  Views(213)  Comments(0)    收藏  举报