1. Event 使用方法 // 事件发布方 class MyEventArgs : EventArgs { //1. 定义参数 public MyEventArgs(string value) { _value = value; } public string value { get{return _value;} } private string _value; } class MyDelegate { //2. 定义时间接受方必须实现的 public delegate void MyDelegateHandler(object obj, MyEventArgs args); //3. 定义事件对象 public event MyDelegateHandler MyHandler; public MyDelegate() { MyImplementation my = new MyImplementation(this); MyEventArgs args = new MyEventArgs("Test"); //4. 事件调用 通知所以事件的侦听者 MyHandler(this, args); } } // 事件侦听方 class MyImplementation { public MyImplementation(MyDelegate de) { //1. 构造委托实例 de.MyHandler += new MyDelegate.MyDelegateHandler(this.MyImp); } //2. 实现回调函数 public void MyImp(object obj, MyEventArgs args) { Console.WriteLine(args.value); } } 2. Delegate使用方法 namespace MyDelegate { //1. 定义delegate 相当于定义函数指针 public delegate void MyDelegateHandler(); class MyDelegate { public MyDelegate() { } //2. 定义回调函数 static static public void Delegate() { Console.WriteLine("This is delegate"); } } class MyImplementation { public MyImplementation() { //3. 定义delegate对象 相当于让函数指针指向函数 MyDelegateHandler my = new MyDelegateHandler(MyDelegate.Delegate); //4. 调用 my(); } } class Program { static void Main(string[] args) { MyImplementation my = new MyImplementation(); } } }