Heim >Backend-Entwicklung >C#.Net-Tutorial >Detaillierte Erläuterung der Delegateninstanzen in .net 1.x
Der vorherige Artikel hat die Verwendung der Delegation zur Implementierung eines mehrsprachigen Begrüßungsprogramms demonstriert. In diesem Artikel wird die Verwendung der Delegation in .net 1.x zusammengefasst.
Da der Delegat ein Typ (Klasse) ist, muss er den Prozess durchlaufen, bei dem er zuerst eine Klasse deklariert, dann ein neues Objekt erstellt und es schließlich aufruft.
Die Verwendung von Delegate in .net 1.x ist wie folgt, der folgende Code:
1 namespace DelegateDemo 2 { 3 //声明委托 4 public delegate void MyDel(string arg1, string arg2); 5 6 class Program 7 { 8 static void Main(string[] args) 9 {10 //.net 1.x中的委托11 Class1 c1 = new Class1();12 13 //创建委托对象14 MyDel myDel1 = new MyDel(c1.InstanceMethod);//实例方法15 MyDel myDel2 = new MyDel(Class1.StaticMethod);//静态方法16 17 //调用委托18 myDel1("a", "b");//或者myDel1.Invoke("a", "b");19 myDel2("a", "b");//或者myDel2.Invoke("a", "b");20 21 Console.ReadKey();22 }23 }24 25 public class Class126 {27 public void InstanceMethod(string arg1, string arg2)28 {29 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));30 }31 32 public static void StaticMethod(string arg1, string arg2)33 {34 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));35 }36 }37 }
Aus dem obigen Code können wir Folgendes zusammenfassen:
1 Der Delegat kann sowohl Instanzmethoden als auch statische Methoden akzeptieren, solange die Signatur und der Rückgabewerttyp der Methode übereinstimmen delegieren.
2. Es gibt zwei Möglichkeiten, einen Delegaten aufzurufen. Die erste ist im Wesentlichen die Invoke-Methode zum Aufrufen des Delegaten.
Das Obige verwendet new DelegateType(), um einen Delegaten zu erstellen. Tatsächlich kann ein einfacherer Weg zum Erstellen eines Delegaten verwendet werden. Der obige Code zum Erstellen eines Delegaten kann wie folgt vereinfacht werden:
1 //创建委托对象2 MyDel myDel1 = c1.InstanceMethod;//实例方法3 MyDel myDel2 = Class1.StaticMethod;//静态方法
Das obige Beispiel: Erstellen Sie einen Delegaten. Tatsächlich kann der Delegat mehrere Methoden hinzufügen, indem er „+=“ und die Entfernungsmethode „-=“ implementiert 🎜>
1 //创建委托对象2 MyDel myDel = c1.InstanceMethod;3 myDel += c1.InstanceMethod2;4 myDel += Class1.StaticMethod;5 myDel += Class1.StaticMethod2;1. Eine Kettendelegierung (oder Multicast-Delegation) besteht aus mehreren Delegaten. Die Klasse System.MulticastDelegate ist für die Kettendelegierung konzipiert.
2, += ruft im Wesentlichen die Delegate.Combine-Methode auf.
Den Delegaten aufrufen
1 //调用委托2 myDel("aaa","bbb");Der Grund, warum Kettendelegaten sequentiell aufgerufen werden können, besteht darin, dass System.MulticastDelegate intern einen Zeiger auf den nächsten verwaltet delegieren.
Ausgabeergebnis:
Hinweis:
1, wenn dem Delegaten mehrere identische Methoden hinzugefügt werden, dann werden diese Methoden wiederholt aufgerufen.
2. Wenn der Delegat einen Rückgabewert hat und die Liste der aufrufenden Methoden des Delegaten mehrere Methoden enthält, wird nur der Rückgabewert der letzten Methode zurückgegeben und andere Rückgabewerte werden ignoriert.
Zum Schluss fassen Sie mit XMind zusammen:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Delegateninstanzen in .net 1.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!