Unterschiede bei der Zuweisung von C # -Ereignishandlern?

7

Ich habe immer Ereignishandler wie diese zugewiesen, die von Intellisense Auto-Vervollständigung geleitet werden.

%Vor%

Ich habe kürzlich bemerkt, dass einer meiner Kollegen es so macht.

%Vor%

Beide Methoden sind syntaktisch korrekt, kompilieren und verhalten sich wie erwartet.

Was sind die Unterschiede, Vorteile oder Nachteile dieser Methoden? Führen sie zu demselben IL-Code oder gibt es einen feinen Unterschied, auf den ich achten muss?

    
Steve Crane 25.08.2009, 08:20
quelle

4 Antworten

12
  

Was sind die Unterschiede, Vorteile oder Nachteile dieser Methoden?

Die zweite Methode ist neuer, d. h. sie wird nur seit C # 2.0 (glaube ich) unterstützt, wodurch eine automatische Konvertierung von einer Methodengruppe (d. h. ein Methodenname) zu einem Delegaten hinzugefügt wurde. Der Aufruf des Konstruktors wird somit vom Compiler hinzugefügt und die zweite Methode ist nur syntaktischer Zucker für den ersten.

Aus diesem Grund gibt es keine anderen Unterschiede zwischen den beiden.

Da die zweite Methode dasselbe tut wie die erste, sollte sie mit weniger Syntax bevorzugt werden.

    
Konrad Rudolph 25.08.2009, 08:23
quelle
3

Kein Unterschied, es ergibt sich die gleiche IL.

Es ist nur eine Möglichkeit, dasselbe mit weniger Code zu sagen.

    
Nifle 25.08.2009 08:23
quelle
3

Das Ergebnis ist in beiden Fällen dasselbe. Aber im letzteren Fall wird der C # -Compiler den EventHandler-Typ aus dem Code ableiten, wodurch Sie ein paar Schlüsselstriche sparen.

    
Peter Lillevold 25.08.2009 08:23
quelle
2

Ja, der Compiler erzeugt in beiden Fällen den gleichen IL-Code, der zweite Fall ist nur die Syntax Zucker

    
Arsen Mkrtchyan 25.08.2009 08:24
quelle

Tags und Links