• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

委托和lambda

开发技术 开发技术 2周前 (04-30) 7次浏览
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace DelegatesAndLambda
 8 {
 9     //委托:定义了方法的类型,存储是一些具有相同签名(相同返回值、相同参数)的方法的地址列表
10     //泛型委托:委托重用
11     //lambda:本质来说是一个匿名方法
12     class Program
13     {
14         //自定义委托
15         delegate void hellodelegate(string msg);
16 
17         //泛型委托
18         delegate void genericsDelegate<T>(T a);
19 
20         static void Main(string[] args)
21         {
22             //初始化
23             hellodelegate hello = new hellodelegate(SayHelloByEglish);
24             genericsDelegate<string> gdl = new genericsDelegate<string>(SayHelloByEglish);
25             genericsDelegate<int> gdl2 = new genericsDelegate<int>(AddNum);
26             //预定义委托
27             //无返回值
28             Action<string> action = new Action<string>(SayHelloByEglish);
29             action("Speak English");
30             //有返回值 TResult 返回值泛型
31             Func<string,string> func = new Func<string,string>(SayHelloToWorld);
32             Console.WriteLine(func("有返回值的预定义委托"));
33 
34             //labmda表达式
35             //使用匿名方法
36             Action<string> action1 = new Action<string>(delegate (string msg) {
37                 Console.WriteLine(msg);
38             });
39             Action<string> action2 = new Action<string>((string msg) => {
40                 Console.WriteLine(msg);
41             });
42             //一个参数 一个语句
43             Action<string> action3 = new Action<string>( msg => {
44                 Console.WriteLine(msg);
45             });
46             //无参无返回值
47             Action action4 = new Action(() => {
48                 Console.WriteLine("");
49             });
50             //调用
51             hello.Invoke("My Speck English");
52             gdl("Say japanese");
53             gdl2(5);
54             action1("匿名委托");
55             Console.ReadKey();
56         }
57 
58         public static void SayHelloByEglish(string msg)
59         {
60             Console.WriteLine(msg);
61         }
62 
63         public static void AddNum(int a)
64         {
65             Console.WriteLine(a + 5);
66         }
67 
68         public static string SayHelloToWorld(string param)
69         {
70             return param;
71         }
72     }
73 
74 }

 


程序员灯塔
转载请注明原文链接:委托和lambda
喜欢 (0)