非标准事件声明

事件可以是任何代表类型,而不仅仅是 EventHandlerEventHandler<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;

这声明了三个单独的事件(Event1Event2Event3)所有类型 EventHandler
注意:尽管某些编译器可能在接口和类中接受此语法,但 C#规范(v5.0§13.2.3)为不允许它的接口提供语法,因此在接口中使用此语法可能与不同的编译器不可靠。