Delegate, Event Delegate其实就相当于C++/C里面的函数指针.用法如下: 1.最常规的使用 class Program { public delegate void NumberChangedEventHandler(int number); class Publisher { public NumberChangedEventHandler NumberChanged; } class Subscriber { public void OnNumberChanged(int number) { string message = "New value is " + number; Console.WriteLine(message); } } static void Main(string[] args) { Publisher pub = new Publisher(); Subscriber sub1 = new Subscriber(); Subscriber sub2 = new Subscriber(); pub.NumberChanged += new NumberChangedEventHandler(sub1.OnNumberChanged); pub.NumberChanged += new NumberChangedEventHandler(sub2.OnNumberChanged); pub.NumberChanged(3); Console.WriteLine("over"); } } 2.直接当成函数指针用 class Program { public delegate void NumberChangedEventHandler(int number); class Publisher { public NumberChangedEventHandler NumberChanged; } class Subscriber { public void OnNumberChanged(int number) { string message = "New value is " + number; Console.WriteLine(message); } } static void Main(string[] args) { Publisher pub = new Publisher(); Subscriber sub1 = new Subscriber(); pub.NumberChanged = sub1.OnNumberChanged; pub.NumberChanged(3); } } 3.异步调用 class Program { public delegate void NumberChangedEventHandler(int number); class Publisher { public NumberChangedEventHandler NumberChanged; } class Subscriber { public void OnNumberChanged(int number) { string message = "New value is " + number; Console.WriteLine(message); } } static void Main(string[] args) { Publisher pub = new Publisher(); Subscriber sub1 = new Subscriber(); pub.NumberChanged += new NumberChangedEventHandler(sub1.OnNumberChanged); pub.NumberChanged.BeginInvoke(3, null, null); } }