非標準事件宣告
事件可以是任何代表型別,而不僅僅是 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)為不允許它的介面提供語法,因此在介面中使用此語法可能與不同的編譯器不可靠。