Heim  >  Artikel  >  Backend-Entwicklung  >  Informationen zu Delegateninstanzen in .net 3.5

Informationen zu Delegateninstanzen in .net 3.5

零下一度
零下一度Original
2017-06-23 16:05:191488Durchsuche

.net 3.5 führte Linq- und Lambda-Ausdrücke ein, sodass die Erstellung von Delegaten einfacher und eleganter geworden ist.

Delegates in .net 3.5

Nach der Einführung von Lambda-Ausdrücken besteht keine Notwendigkeit mehr, anonyme Methoden zu verwenden, wodurch die Erstellung von Delegaten einfacher und eleganter wird. Wenn der Lambda-Ausdruck zuerst eingeführt wird, gibt es tatsächlich keine anonyme Methode.

Lambda-Ausdrücke werden in C# als „arg-list => expr-body“ geschrieben. Die linke Seite des „=>“-Symbols ist die Parameterliste des Ausdrucks und die rechte Seite ist der Ausdruck Körper (Körper). Die Parameterliste kann 0 bis mehr Parameter enthalten, getrennt durch Kommas.

 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 3.5中的委托11 12             //创建委托,使用lambda表达式代替匿名方法13             MyDel myDel = (string arg1, string arg2) =>14             {15                 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));16             };17 18             //调用委托19             myDel("aaa", "bbb");20 21             Console.ReadKey();22         }23     }24 }

Lassen Sie den Parametertyp

weg, da der Compiler den Typ des Delegatenparameters aus der Delegatendeklaration kennen kann (diese Funktion ist Daher können wir den Parametertyp weglassen, sodass der Code wie folgt vereinfacht wird.

1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) =>3 {4     Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));5 };

Hinweis: Wenn nur ein Parameter vorhanden ist, können Sie die Klammern um den Parametertyp auch weglassen.

Verwenden Sie Anweisungen, um Ausdrücke zu ersetzen

Da Lambda-Ausdrücke zulassen, dass der Ausdruckskörper eine Anweisung oder ein Anweisungsblock ist, können Sie den Anweisungsblock durch einen ersetzen, wenn der Ausdruckskörper nur eine Anweisung enthält Erklärung zur weiteren Vereinfachung. Der folgende Code:

1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) => Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));

Das obige ist der detaillierte Inhalt vonInformationen zu Delegateninstanzen in .net 3.5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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