.net 3.5 a introduit les expressions Linq et lambda, de sorte que la création de délégués est devenue plus simple et plus élégante.
Après l'introduction des expressions lambda, il n'est plus nécessaire d'utiliser des méthodes anonymes, ce qui rend la création de délégués plus simple et plus élégante. En fait, si l'expression lambda est introduite en premier, il n'y aura pas de méthode anonyme.
Les expressions Lambda sont écrites en C# sous la forme "arg-list => expr-body". Le côté gauche du symbole "=>" est la liste des paramètres de l'expression, et le côté droit est la liste des paramètres de l'expression. côté est l’expression corps (corps). La liste des paramètres peut contenir de 0 à plusieurs paramètres, séparés par des virgules.
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 }
car le compilateur peut connaître le type du paramètre délégué à partir de la déclaration du délégué (cette fonctionnalité est appelé déduction de type), nous sommes donc autorisés à omettre le type de paramètre, le code est donc simplifié comme suit.
1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) =>3 {4 Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));5 };
Remarque, s'il n'y a qu'un seul paramètre, vous pouvez également omettre les parenthèses autour du type de paramètre.
Étant donné que les expressions lambda permettent au corps de l'expression d'être une instruction ou un bloc d'instructions, donc lorsque le corps de l'expression n'a qu'une seule instruction, vous pouvez remplacer le bloc d'instructions par un déclaration pour poursuivre la simplification. Le code suivant :
1 //创建委托,使用lambda表达式代替匿名方法2 MyDel myDel = (arg1, arg2) => Console.WriteLine(string.Format("arg1:{0},arg2:{1}", arg1, arg2));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!