C#委托 Lamda表达式

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApplication1
 8 {
 9     delegate void DelegateGreet(string name);  //声明委托类型
10     class Lamda
11     {
12         public static void EnglishGreet(string name)
13         {
14             Console.WriteLine("GoodMorning!" + name);
15         }
16 
17         static void Main(string[] args)
18         {
19             DelegateGreet dele1 = Lamda.EnglishGreet;   //创建委托变量 并对其进行赋值
20             dele1("jack");    //调用委托方法
21 
22             /*.net2.0提出的匿名方法对委托进行简化   
23              这种方式和上面的方法的最大区别就是不用去再去创建委托变量 赋值
24              匿名方法就不需要写上面的东西
25              */
26             DelegateGreet dele2 = delegate(string name)
27             {
28                 Console.WriteLine("GoodMorning!" + name);
29             };
30             dele2("jack");
31 
32             /*.net3.5提出的Lamda表达式对委托方法再次简化
33                Lamda 表达式 就是匿名方法 只是语法不同
34              * 
35              * (param) =>expr  param是输入参数列表 expr是一个表达式或者一系列语法
36              
37             */
38             DelegateGreet dele3 = (name1) => { Console.WriteLine("GoodMorning!" + name1); }; //圆括号里 如果是一个参数,可以省略括号,参数类型可写可不写
39             dele3("jack");
40             /*
41              * 声明一个委托类型时候,无非就是返回值类型和参数类型不同
42              * 在.net3.5 中提供了两个专门简化委托的泛型方法 
43              * Action没有参数,Action<>有参数  都不具有返回值
44              * Func,Func<>
45              * 其实上面两种那个泛型 的委托都是 系统已经给你定义好了 你直接用而已
46              * 用以再次简化委托
47              * 其实
48              */
49             //Action<>可以加载至多16个参数,然后这样做的好处就是自己不用事先去声明委托变量,很灵活方便
50             Action<string,int > dele4 = (name1,name2) => { Console.WriteLine("GoodMorning!" + name1+"你今年"+name2+"岁了"); };
51             dele4("jack",15);
52           
53             //Func实例  没有参数 只有返回值
54             Func<string> dele5 = () => { return "没有参数只有返回值"; };// 因为只有返回值  可以把大括号去掉
55             Console.WriteLine(dele5());
56 
57 
58 
59             Console.Read();
60         }
61     }
62 }

输出:

GoodMorning!jack
GoodMorning!jack
GoodMorning!jack
GoodMorning!jack你今年15岁了
没有参数只有返回值

原文地址:https://www.cnblogs.com/KingsWang/p/3336795.html