grundsätzlich:
1. Das Wesentliche einer Delegation ist ein Zeiger, ein Funktionszeiger. Rufen Sie einfach die erste Adresse der Funktion ab.
Die Delegation von C# erhöht die Sicherheit, was sich in der Typerkennung des Funktionsanweisungsblocks widerspiegelt, auf den der Funktionszeiger verweist, z. B. Rückgabewert, Parametertyp und Anzahl der Parameter.
Wenn einem Funktionszeiger in C ein Wert zugewiesen wird (in C# ist dies der Fall, wenn der Delegat instanziiert wird, da das C#-Backend den Delegaten als Klasse behandelt und kapselt), ob der zugewiesene Wert die verschiedenen Bedingungen des Typs erfüllt (Rückgabewert). , Parametertyp, Anzahl der Parameter) werden nicht überprüft, und die Garantie wird vom Benutzer gegeben, und C# wird sie kompilieren und auffordern.
2. Der Prozess der Delegateninstanziierung, dh der Prozess der Konstruktion des Delegatenobjekts, besteht darin, dem Delegaten die Speicheradresse eines vorhandenen Funktionscode-Anweisungsblocks (statische Funktion, nicht statische Mitgliedsfunktion der Instanz) zuzuweisen Der Zuweisungsprozess ist das, was der delegierte Konstruktor ausführt. Daher muss der delegierte Konstruktor über einen Parameter verfügen, der vom System im Hintergrund verarbeitet wird. Dies ist der Funktionszeiger, der die Typprüfung erfüllt, und der zu überprüfende Typ , Parametertyp, Anzahl der Parameter) werden alle bei der Deklaration und Definition des Delegaten angegeben.
3. Zwei Methoden zur Delegateninstanziierung:
1) A a = neues A (statischer Methodenname/Instanz. Methodenname);
2) A a = statischer Methodenname/Instanz.Methodenname;
Zwei von Delegaten aufgerufene Methoden:
1) a.Invoke()
2)a()
Die zum Erstellen eines Delegaten verwendete Methode kann eine statische Methode oder eine Mitgliedsfunktion eines instanziierten Objekts sein. Das Wesentliche ist, dass diese Codeanweisung kompiliert, Speicher zugewiesen und die Parameter an den Delegaten übergeben wurden (im Wesentlichen der Header von). Diese Anweisungsdaten (Adresse) sind gültig und aussagekräftig. Aus dieser Perspektive können natürliche statische Methoden und Instanzmethoden zum Erstellen und Erstellen von Delegateninstanzen verwendet werden.