当前位置: 移动技术网 > IT编程>开发语言>.net > C# 委托链(多播委托)

C# 委托链(多播委托)

2019年04月17日  | 移动技术网IT编程  | 我要评论

冰封:永恒之门,赵世熙19禁,19寸宽屏壁纸

委托既可以封装一个方法,又可以对同一类型的方法进行封装,它就是多播委托

 1 using system;
 2 using system.collections.generic;
 3 using system.linq;
 4 using system.text;
 5 
 6 namespace delegatetest
 7 {
 8     class program
 9     {
10         //申明一个委托类型,它的实例引用一个方法
11         //该方法传递0参数,返回void类型
12         public delegate string delegatetestone();
13 
14         static void main(string[] args)
15         {
16             //用静态方法来实例化委托
17             delegatetestone teststatic = new delegatetestone(program.method1);
18 
19             //用实例方法来实例化委托
20             delegatetestone test2 = new delegatetestone(new program().method2);
21 
22             //用实例方法来实例化委托
23             delegatetestone test3 = new delegatetestone(new program().method3);
24 
25             //定义空一个委托对象
26             delegatetestone deleteall = null;
27             deleteall += teststatic;
28             deleteall += test2;
29             deleteall += test3;
30             console.writeline(test(deleteall));
31 
32             console.readline();
33         }
34 
35 
36         public static string method1()
37         {
38 
39             //console.writeline("这是一个静态方法");
40             return "这是一个静态方法";
41         }
42 
43         public string method2()
44         {
45             //console.writeline("这是实例方法2");
46             return "这是实例方法2";
47         }
48 
49         public string method3()
50         {
51            // console.writeline("这是实例方法3");
52             return "这是实例方法3";
53         }
54 
55 
56         //测试多播委托
57         public static string test(delegatetestone testone)
58         {
59             if (testone == null)
60             {
61                 return null;
62             }
63             stringbuilder returnstring = new stringbuilder();
64 
65             delegate[] delegatearray = testone.getinvocationlist();
66 
67             foreach (delegatetestone t in delegatearray)
68             {
69                 try
70                 {
71                     returnstring.append(t() + environment.newline);
72                 }
73                 catch (exception e)
74                 {
75 
76                 }
77             }
78             //把结果返回给调用者
79             return returnstring.tostring();
80         }
81 
82     }
83 }

运行结果:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网