事件与委托
using System; /* public delegate void EvenNumberHandler(int Number);//定义了一个委托 class Counter { public event EvenNumberHandler OnEvenNumber; public Counter() { OnEvenNumber = null; } public void CountTo100() { int CurrentNumber; for (CurrentNumber = 0; CurrentNumber <= 100; CurrentNumber++) { if (CurrentNumber % 2 == 0) if (OnEvenNumber != null) { OnEvenNumber(CurrentNumber); } } } } class EvenNumberHandlerClass { public void EvenNumberFound(int EvenNumber) { Console.WriteLine(EvenNumber); } } class EvenNumberHandlerClass2 { public void EvenNumberFound2(int EvenNumber1) { Console.WriteLine(EvenNumber1); } } class MainClass { public static void Main() { Counter MyCounter = new Counter(); EvenNumberHandlerClass MyEvenNumberHandlerClass = new EvenNumberHandlerClass(); EvenNumberHandlerClass2 MyEvenNumberHandlerClass2 = new EvenNumberHandlerClass2(); MyCounter.OnEvenNumber += new EvenNumberHandler(MyEvenNumberHandlerClass.EvenNumberFound);//可以将任意多的委托 MyCounter.OnEvenNumber += new EvenNumberHandler(MyEvenNumberHandlerClass2.EvenNumberFound2); //实例与一个事件联系起来 MyCounter.CountTo100(); } } */ //标准化事件的设计 public delegate void EvenNumberHandler (object Originator,OnEvenNumberEventArgs EvenNumberEventArgs); class Counter { public event EvenNumberHandler OnEvenNumber; public Counter() { OnEvenNumber = null; } public void CountTo100() { int CurrentNumber; for (CurrentNumber = 0; CurrentNumber <= 100; CurrentNumber++) { if (CurrentNumber % 2 == 0) { if (OnEvenNumber != null) { OnEvenNumberEventArgs EventArguments; EventArguments = new OnEvenNumberEventArgs(CurrentNumber); OnEvenNumber(this, EventArguments);//????存在疑问this到底是如何使用的 } } } } } public class OnEvenNumberEventArgs : EventArgs { private int EvenNumber; public OnEvenNumberEventArgs(int EvenNumber) { this.EvenNumber = EvenNumber;//this } public int Number { get { return EvenNumber; } } } class EventNumberHandlerClass { public void EvenNumberFound(object Originator, OnEvenNumberEventArgs EvenNumberEventArgs) { Console.WriteLine(EvenNumberEventArgs.Number); } } class MainClass { public static void Main() { Counter MyCounter = new Counter (); EventNumberHandlerClass MyEventNumberHandlerClass = new EventNumberHandlerClass(); MyCounter.OnEvenNumber += new EvenNumberHandler(MyEventNumberHandlerClass.EvenNumberFound); MyCounter.CountTo100(); } }