Nehmen Sie den folgenden Code:
private void anEvent(object sender, EventArgs e) {
//some code
}
Was ist der Unterschied zwischen den folgenden?
[object].[event] += anEvent;
//and
[object].[event] += new EventHandler(anEvent);
[AKTUALISIEREN]
Anscheinend gibt es keinen Unterschied zwischen den beiden ... der erstere ist nur syntaktischer Zucker des letzteren.
c#
delegates
event-handling
Andreas Grech
quelle
quelle
Antworten:
Es gibt keinen Unterschied. In Ihrem ersten Beispiel leitet der Compiler automatisch den Delegaten ab, den Sie instanziieren möchten. Im zweiten Beispiel definieren Sie den Delegaten explizit.
Die Delegateninferenz wurde in C # 2.0 hinzugefügt. Für C # 1.0-Projekte war das zweite Beispiel Ihre einzige Option. Für 2.0-Projekte ist das erste Beispiel, das Inferenz verwendet, das, was ich lieber in der Codebasis verwenden und sehen würde - da es prägnanter ist.
quelle
[object].[event] += anEvent;
ist nur syntaktischer Zucker für -
[object].[event] += new EventHandler(anEvent);
quelle
Ich glaube nicht, dass es einen Unterschied gibt. Der Compiler wandelt den ersten in den zweiten um.
quelle