非标准事件声明
事件可以是任何代表类型,而不仅仅是 EventHandler
和 EventHandler<T>
。例如:
//Declaring an event
public event Action<Param1Type, Param2Type, ...> EventName;
这与标准的 EventHandler
事件类似地使用:
//Adding a named event handler
public void HandlerName(Param1Type parameter1, Param2Type parameter2, ...) {
/* Handler logic */
}
EventName += HandlerName;
//Adding an anonymous event handler
EventName += (parameter1, parameter2, ...) => { /* Handler Logic */ };
//Invoking the event
EventName(parameter1, parameter2, ...);
可以在单个语句中声明相同类型的多个事件,类似于字段和局部变量(尽管这通常是个坏主意):
public event EventHandler Event1, Event2, Event3;
这声明了三个单独的事件(Event1
,Event2
和 Event3
)所有类型 EventHandler
。
注意:尽管某些编译器可能在接口和类中接受此语法,但 C#规范(v5.0§13.2.3)为不允许它的接口提供语法,因此在接口中使用此语法可能与不同的编译器不可靠。