Sind Methodennamen implizit zur Delegierung von Typen umgewandelt?

8

Ich habe ein wenig Schwierigkeiten, die Delegierten zu verstehen.

Ich habe einen Delegaten, den ich aufrufen werde, wenn ein y-Zeichen eingegeben wird:

%Vor%

Ich habe eine Subscribe-Methode, damit der aufrufende Code eine Benachrichtigung anfordern kann, wenn der Delegate aufgerufen wird:

%Vor%

Soweit ich sehen kann, muss ich, um mich bei diesem Delegaten zu registrieren, etwas vom Typ antwortZu geben. Beim Aufruf der subscribe-Methode kann ich jedoch entweder eine neue Instanz des Delegaten oder einfach den Namen der Methode angeben. Bedeutet dies, dass jede Methode, die mit der Delegatensignatur übereinstimmt, verwendet werden kann und automatisch in den richtigen Delegattyp konvertiert wird?

** Bearbeiten **

Also wäre es unter dieser Voraussetzung auch möglich, Dingen wie Klick-Event-Handlern für Buttons nur einen Methodennamen zu geben (sofern die Methode den Absender und das relevante Event-Objekt übernommen hat), würde es in den benötigten Delegaten konvertiert?

    
richzilla 23.04.2011, 22:36
quelle

2 Antworten

9

Dies ist eine Methodengruppenkonvertierung . Er konvertiert eine Methodengruppe (im Grunde den Namen einer Methode oder überladene Methoden) in eine Instanz eines Delegattyps mit einer kompatiblen Signatur.

Ja, jede kompatible Methode kann verwendet werden. Beachten Sie, dass Sie auch ein Ziel angeben können, zum Beispiel:

%Vor%

There muss ein bestimmter Delegatentyp sein, aber involvieren. Sie können nicht einfach verwenden:

%Vor%

... der Compiler kennt die Art des anzulegenden Delegaten nicht.

Weitere Informationen finden Sie in Abschnitt 6.6 der C # 4-Sprachspezifikation.

Beachten Sie, dass eine Methodengruppenkonvertierung immer eine neue Instanz des betreffenden Delegaten erstellt - sie wird nicht zwischengespeichert (und kann nicht ohne Verletzung der Spezifikation sein.)

    
Jon Skeet 23.04.2011, 22:41
quelle
2

soweit ich weiß ... ja, der Delegattyp stellt nur sicher, dass die Signaturen übereinstimmen

    
DarkSquirrel42 23.04.2011 22:42
quelle

Tags und Links