1 class Program
2 {
3 void Func1()
4 {
5 Console.WriteLine("Func1 invoke");
6 }
7 void Func2()
8 {
9 Console.WriteLine("Func2 invoke");
10 }
11 public delegate void funcDelegate();
12 public funcDelegate delegateReference;
13
14
15 static void Main(string[] args)
16 {
17 Program PInstance = new Program();
18
19 PInstance.delegateReference += PInstance.Func1;
20 PInstance.delegateReference += PInstance.Func1;// 加两次Func1
21 PInstance.delegateReference += PInstance.Func2;
22
23 PInstance.delegateReference();
24 /* 输出:
25 Func1 invoke
26 Func1 invoke
27 Func2 invoke
28 */
29
30 PInstance.delegateReference -= PInstance.Func1;
31 PInstance.delegateReference();
32 /* 输出:(从列表中删掉一个Func1
33 Func1 invoke
34 Func2 invoke
35 */
36
37 PInstance.delegateReference -= PInstance.Func1;
38 PInstance.delegateReference -= PInstance.Func2;
39 if (PInstance.delegateReference == null)
40 Console.WriteLine("delegate list is empty");
41 }
2 {
3 void Func1()
4 {
5 Console.WriteLine("Func1 invoke");
6 }
7 void Func2()
8 {
9 Console.WriteLine("Func2 invoke");
10 }
11 public delegate void funcDelegate();
12 public funcDelegate delegateReference;
13
14
15 static void Main(string[] args)
16 {
17 Program PInstance = new Program();
18
19 PInstance.delegateReference += PInstance.Func1;
20 PInstance.delegateReference += PInstance.Func1;// 加两次Func1
21 PInstance.delegateReference += PInstance.Func2;
22
23 PInstance.delegateReference();
24 /* 输出:
25 Func1 invoke
26 Func1 invoke
27 Func2 invoke
28 */
29
30 PInstance.delegateReference -= PInstance.Func1;
31 PInstance.delegateReference();
32 /* 输出:(从列表中删掉一个Func1
33 Func1 invoke
34 Func2 invoke
35 */
36
37 PInstance.delegateReference -= PInstance.Func1;
38 PInstance.delegateReference -= PInstance.Func2;
39 if (PInstance.delegateReference == null)
40 Console.WriteLine("delegate list is empty");
41 }
浙公网安备 33010602011771号