C#用户可能会发现,event关键字有时候可有可无。
namespace ConsoleApplication3 { class Program { static void Main(string[] args) { MyClass1 obj = new MyClass1(); obj.AEvent += new EventHandler(MyEventHandler); //obj.AEvent(); obj.FireEvent(); obj.AEvent -= new EventHandler(MyEventHandler); obj.FireEvent(); } public static int MyEventHandler() { Console.WriteLine("Event"); return 0; } } public delegate int EventHandler(); class MyClass1 { public /*event*/ EventHandler AEvent; public void FireEvent() { if (AEvent != null) { AEvent(); } } } }
如上源码,event关键字有无的效果一样。那么event关键字的作用到底是什么呢?就是那句obj.AEvent()。如果使用了关键字event,那么这句在编译时将报错,而如果没有使用关键字event,则编译正常。event关键字,限定了外界对委托变量只能使用+=或-=操作符,对于其他的比如赋值或者调用都会被视为错误。另外,据说event关键字限定的委托最好是返回值为void的类型,当然这只是推荐,没有强制。
C# Event关键字解析
本文通过一个具体的C#示例代码讲解了event关键字的作用及使用规范。event关键字限制了对外界对委托变量的操作,仅允许使用+=或-=操作符,并且推荐使用返回值为void的委托类型。
4014

被折叠的 条评论
为什么被折叠?



