C# Language Declaración de evento no estándar


Ejemplo

Los eventos pueden ser de cualquier tipo de delegado, no solo EventHandler y EventHandler<T> . Por ejemplo:

//Declaring an event
public event Action<Param1Type, Param2Type, ...> EventName;

Esto se usa de manera similar a los eventos de EventHandler estándar:

//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, ...);

Es posible declarar varios eventos del mismo tipo en una sola declaración, similar a los campos y las variables locales (aunque esto puede ser una mala idea):

public event EventHandler Event1, Event2, Event3;

Esto declara tres eventos separados ( Event1 , Event2 y Event3 ) todos de tipo EventHandler .
Nota: aunque algunos compiladores pueden aceptar esta sintaxis en las interfaces y en las clases, la especificación C # (v5.0 §13.2.3) proporciona una gramática para las interfaces que no lo permiten, por lo que su uso en las interfaces puede ser poco confiable con diferentes compiladores.