奥伯丁的月亮井
独自在黑海岸看海

导航

 
 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         }
posted on 2012-02-12 14:00  ROBOTECH  阅读(258)  评论(0)    收藏  举报