委托之初识(一)

一、委托:也是一个类,继承自System.MulticastDelegate。可以理解为:A想找个女朋友(C),B是婚介所,A委托B帮忙能找到C。

二、示例:

 1  //定义一个带有参数的委托,委托的参数类型要跟AppleCompany类中的四个方法保持一致,都是Int32类型,委托其实就是个类,一般为了调用方便都声明在命名空间Delegate_01中.
 2     public delegate void Dele(Int32 num);    
 3     class Program
 4     {     
 5         static void Main(string[] args)
 6         {
 7             DigitalFactory df = new DigitalFactory();
 8             df.MakeDigitals(AppleCompany.MakeIphone, 200);
 9             df.MakeDigitals(new AppleCompany().MakeIpad, 200);
10             df.MakeDigitals(new AppleCompany().MakeImac, 200);
11             df.MakeDigitals(new AppleCompany().MakeIpod, 200);
12         }
13     }
14 
15     //在DigitalFactory创建一个带有委托参数的方法,用来传递方法,然后通过委托调用具体方法
16     public  class DigitalFactory
17     {
18         public  void MakeDigitals(Dele dele, Int32 Number)
19         {
20             if (dele != null)
21             {
22                 dele(Number);
23                 Console.WriteLine("Target:" + dele.Target + ",Method:" + dele.Method.Name);
24             }
25         }
26     }
27 
28     //在AppleCompany类,有个四个方法。
29     public class AppleCompany
30     {
31         public static void MakeIphone(int num)
32         {
33             Console.WriteLine(num + "台Iphone 已生产出来");
34         }
35 
36         public void MakeIpad(int num)
37         {
38             Console.WriteLine(num + "台Ipad 已生产出来");          
39         }
40 
41         public void MakeImac(int num)
42         {
43             Console.WriteLine(num + "台Imac 已生产出来");         
44         }
45 
46         public void MakeIpod(int num)
47         {
48             Console.WriteLine(num + "台Ipod 已生产出来");
49             Console.Read();
50         }
51     }
View Code

结果:

三、绑定多个方法

 1         static void Main(string[] args)
 2         {
 3             DigitalFactory df = new DigitalFactory();
 4             //委托绑定多个方法。
 5             Dele deles = new Dele(AppleCompany.MakeIphone);
 6             deles += new AppleCompany().MakeIpad;
 7             deles += new AppleCompany().MakeImac;
 8             deles += new AppleCompany().MakeIpod;
 9             df.MakeDigitals(deles,200);
10         }
View Code

结果:

   下载源代码

原文地址:https://www.cnblogs.com/luyuwei/p/3628778.html