2012-07-30 4 views
8

Gibt es hier einen Unterschied?Gibt es einen Unterschied zwischen diesen beiden Möglichkeiten, einen Event-Handler zu entfernen?

Button1.Click -= new EventHandler(Button1_Click); 

und

Button1.Click -= Button1_Click; 

Die zweite Methode scheint nicht, für mich zu arbeiten, aber ich habe es benutzt gesehen, wenn Google-ing ‚wie ein Ereignishandler entfernen‘. Edit: Eigentlich funktionieren beide nicht für mich, auch so sollte entweder synonym funktionieren?

Update:

Der Grund diese nicht für mich zu arbeiten schien, weil ich hatte Autopostback = true auf meine Kontrollen. Ich habe keine Haltepunkte gesetzt, um zu sehen, ob die Ereignisse aufgerufen wurden. Ich habe gerade den Browser beobachtet, um zu sehen, ob er aktualisiert wurde (was ein Post-Back bedeutet).

+0

@MarkByers Nein, eigentlich habe ich meine Frage aktualisiert, um dies zu zeigen. Sehr scharf von dir! – Dean

+0

Klingt, als wäre die 'Button1_Click'-Signatur falsch. Hat der Code funktioniert, um sie hinzuzufügen? – Enigmativity

+0

@Enigmatismus Ich habe die Event-Handler im Markup im Front-End meiner aspx-Seite hinzugefügt, so dass es dort kein Problem gab. Ich habe meine Frage aktualisiert, um den Fehler zu erklären, den ich gemacht habe, als ich angenommen habe, dass dieser Code nicht funktionierte, obwohl es etwas anderes war. – Dean

Antwort

8

Diese beiden Codeteile sind identisch. Die zweite Syntax ("Methodengruppenumwandlung") war ein neues Feature, das in C# 2.0 hinzugefügt wurde.

+4

Ich denke, dass der erste eine Art von Missleading ist. Es fühlt sich nicht so an, als würde ich das bestehende entfernen. Möglicherweise finden viele Anfänger das irritierend. – dowhilefor

+0

@dowhilefor Ich betrachte mich eigentlich nicht mehr als Anfänger, mag aber die erste Syntax immer noch nicht. Einen Verweis auf ein Objekt aus einer Liste zu entfernen, weil ich versuche, ein anderes Objekt zu entfernen, das den gleichen Wert hat, scheint immer noch wie ein Hack zu sein. – Yaur

+0

@Yaur Entschuldigung, ich habe nicht angedeutet, dass du ein Anfänger bist, es war nur eine Vermutung, dass es für andere Leute irritierend sein könnte, die Sprache zu lernen. Aber ich stimme zu, ich denke nicht, dass es für jemanden offensichtlich ist. Um ehrlich zu sein, ich musste nachsehen, was genau dort vor ein paar Monaten passiert, weil ich mir auch nicht mehr sicher war. – dowhilefor

0

Funktional, nein. Es gibt keinen Unterschied zwischen den beiden. Wenn es sich um eine ASP.NET-Anwendung handelt, möchten Sie möglicherweise die automatische Ereignisverkabelung auf der aspx-Seite deaktivieren.

Verwandte Themen