C#委托

View Code
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace ActionDelegate
 7 {
 8     delegate void OutputInfo(string str,int count);
 9 
10     class Program
11     {
12         private static string str = "hello world";
13         private static int count = 0;
14         static void Main(string[] args)
15         {
16             //Test0();
17             //Test1();
18             //Test2();
19             //Test3();
20             //Test4();
21             Test5();
22             Console.ReadKey();
23         }
24 
25         /// <summary>
26         /// 显式声明委托 
27         /// </summary>
28         protected static void Test0()
29         {
30             OutputInfo target = Output;
31             target(str, ++count);
32         }
33 
34         protected static void Test1()
35         {
36             Action<string, int> target;  //申明只有一个参数的委托,返回值必须为void
37             target = Output;
38             target(str, ++count);
39         }
40 
41         protected static void Test2()
42         {
43             Action<string, int> target;   //申明只有一个参数的委托
44             target = delegate(string s, int c) { Output(s, c); };  //匿名方法
45             target(str, ++count);
46         }
47 
48         protected static void Test3()
49         {
50             Action<string, int> target;   //申明只有一个参数的委托
51             target = (s, c) => Output(s, c);  //lambda表达式
52             target(str, ++count);
53         }
54 
55         /// <summary>
56         /// 委托方法
57         /// </summary>
58         /// <param name="str"></param>
59         protected static void Output(string str, int count)
60         {
61             Console.WriteLine("method-{0}:{1}", count, str);
62         }
63 
64         /// <summary>
65         /// 委托方法2
66         /// </summary>
67         /// <param name="str"></param>
68         protected static void Output2(string str)
69         {
70             Console.WriteLine(str);
71         }
72 
73         protected static void Test4()
74         {
75             List<String> names = new List<String>();
76             names.Add("Bruce");
77             names.Add("Alfred");
78             names.Add("Tim");
79             names.Add("Richard");
80 
81             // Display the contents of the list using the Print method.
82             names.ForEach(Output2);
83 
84             // The following demonstrates the anonymous method feature of C#
85             // to display the contents of the list to the console.
86             names.ForEach(delegate(String name)
87             {
88                 Console.WriteLine(name);
89             });
90         }
91 
92         protected static void Test5()
93         {
94             MyClass myClass = new MyClass();
95             myClass.myDelegate();
96         }
97     }
98 }
工欲善其事,必先利其器。
原文地址:https://www.cnblogs.com/zhangzhu/p/2836169.html