C# Language Dichiarazione di eventi non standard


Esempio

Gli eventi possono essere di qualsiasi tipo di delegato, non solo EventHandler e EventHandler<T> . Per esempio:

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

Questo è usato in modo simile agli eventi EventHandler standard:

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

È possibile dichiarare più eventi dello stesso tipo in una singola istruzione, in modo simile ai campi e alle variabili locali (sebbene ciò possa spesso essere una cattiva idea):

public event EventHandler Event1, Event2, Event3;

Questo dichiara tre eventi separati ( Event1 , Event2 ed Event3 ) tutti di tipo EventHandler .
Nota: sebbene alcuni compilatori possano accettare questa sintassi sia nelle interfacce che nelle classi, la specifica C # (v5.0 §13.2.3) fornisce la grammatica per le interfacce che non lo consentono, quindi l'utilizzo di questo nelle interfacce potrebbe non essere affidabile con diversi compilatori.