Ein Delegat ist ein Referenztyp, der auf eine Methode verweist und zum Erreichen einer losen Kopplung verwendet wird, während ein Ereignis ein spezieller Delegat ist, der für die Ereignisbehandlung verwendet wird. Durch die Delegation wird die Verantwortung für das Aufrufen von Methoden an den Empfänger übertragen, wodurch die Wiederverwendbarkeit des Codes verbessert wird. Ereignisse ermöglichen es Objekten, Abonnenten über das Eintreten von Ereignissen zu benachrichtigen, und Abonnenten können auf die Ereignisse reagieren. Um einen Delegaten zu verwenden, müssen Sie einen Delegatentyp mit derselben Signatur wie die aufgerufene Methode definieren, ein Delegate-Objekt erstellen, das auf die Methode verweist, und es als Parameter übergeben. Um ein Ereignis zu verwenden, müssen Sie ein Ereignis mithilfe eines Delegatentyps in der Klasse definieren. Abonnenten können sich durch Hinzufügen und Entfernen von Methoden anmelden. Wenn das Ereignis ausgelöst wird, werden alle Abonnenten aufgerufen.
Die Rolle von Delegaten und Ereignissen in C#
Delegierte und Ereignisse sind häufig verwendete Mechanismen in C#, um eine lose Kopplung zwischen Codes und Ereignisbehandlung zu erreichen.
Delegate
Ereignis
Die Beziehung zwischen Delegation und Ereignissen
Delegate ist der zugrunde liegende Mechanismus von Ereignissen. Ereignisse verwenden Delegaten, um eine Liste von Abonnenten zu verwalten und beim Eintreten des Ereignisses Methodenaufrufe an alle Abonnenten auszulösen.
Verwenden von Delegaten
Um Delegaten zu verwenden, müssen Sie die folgenden Schritte ausführen:
Ereignisse verwenden
Um Ereignisse zu verwenden, müssen Sie die folgenden Schritte ausführen:
Beispiel
Hier ist ein einfaches Beispiel mit Delegierten und Ereignissen:
<code class="csharp">// 定义一个委托 public delegate void MyEventHandler(object sender, EventArgs e); // 定义一个事件 public event MyEventHandler MyEvent; // 触发事件 protected virtual void OnMyEvent(EventArgs e) { MyEvent?.Invoke(this, e); }</code>
<code class="csharp">// 订阅事件 myClass.MyEvent += MyEventHandler;</code>
<code class="csharp">// 触发事件 myClass.OnMyEvent(new EventArgs());</code>
Das obige ist der detaillierte Inhalt vonc# Was ist ein Delegierter und was ist ein Ereignis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!