Heim > Backend-Entwicklung > C#.Net-Tutorial > Detaillierte Erläuterung der Delegateninstanzen in .net 1.x

Detaillierte Erläuterung der Delegateninstanzen in .net 1.x

零下一度
Freigeben: 2017-06-24 09:41:49
Original
1518 Leute haben es durchsucht

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.

Delegate in .net 1.x

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 }
Nach dem Login kopieren

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.

Zuweisungsdelegierter

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;//静态方法
Nach dem Login kopieren

Methoden für den Delegaten hinzufügen und entfernen

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;
Nach dem Login kopieren
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

Der Aufruf des Delegaten ist so einfach wie der Aufruf der Methode. Sie müssen nur die vom Delegaten benötigten Parameter übergeben. Diese Parameter werden zum Aufrufen jeder Methode in verwendet Die Methodenliste des Delegaten wird nacheinander aufgerufen, der folgende Code:

1 //调用委托2 myDel("aaa","bbb");
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage