Kann jemand erklären, was hinter den Kulissen passiert?

8

Es ist mir nicht ganz klar, was in dieser Situation passiert.

Ich würde erwarten, dass beide Funktionen ausgelöst werden.

Entweder speichert die EventHander-Klasse die Liste der Funktionen, die als Array ausgelöst werden sollen - und das Array wird jedes Mal, wenn etwas hinzugefügt / entfernt wird, in ein neues kopiert - oder wenn die Zuweisung erfolgt ist, wird das Ganze in a kopiert neue "Sammlung" - und nicht nur eine Referenz.

Jemand bitte erleuchte mich: D

Hier ist ein kleines Linqpad-Skript:

%Vor%     
Dave Bish 02.04.2012, 14:43
quelle

1 Antwort

8

Event-Handler-Listen sind Delegaten und Delegaten sind unveränderlich - wie Strings. Sie kopieren also den Delegaten, und der zweite Event-Handler wird dem zweiten Delegierten "hinzugefügt", nicht der erste.

Sie können mehr über die Delegierten in Ссылка

Viel Glück!

    
Roy Dictus 02.04.2012, 14:47
quelle

Tags und Links