一个例子让大家可以更好理解事件 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ConsoleApplication11; namespace ConsoleApplication11 { class Program { //首先,我们定义一个委托: //这跟抽象方法的语法格式很相似,只是多了一个关键字delegate。 public delegate void SaySomething(string name); //既然我们已经定义了这个规矩,下面我们就定义具体的方法了。 public void SayHello(string name) { Console.WriteLine("Hello," + name + "!"); } public void SayNiceToMeetYou(string name) { Console.WriteLine("Nice to meet you," + name + "!"); } //我们定义了一个事件,这个事件是“有人来了”,注意定义的时候我们使用event关键字,除此之外,我们还加上了前面定义的“委托”的名字。这个意思是说,我这个事件只会跟“SaySomething”打交道 public event SaySomething come; //这个事件发生的时候,我会通知关注我的这些“委托”(再由这些“委托”去调用具体的方法)。 public void test() { SaySomething sayhello = new SaySomething(SayHello); SaySomething saynice = new SaySomething(SayNiceToMeetYou); //下面两行就是将委托加到事件上,意思是说,如果你这个事件发生了,就告诉我一声。可以通过“+=”来将n个委托实例加到某个事件上,一旦这个事件发生,所有的这些委托实例都会得到通知。 come += sayhello; come += saynice; come("张三"); } static void Main(string[] args) { Program program = new Program(); program.test(); Console.Read(); } } }