Func和Action这两个东西可以说是为代码简化了不少东西,不仅我们在平时用的多,就连微软自己也经常在用它们,最近看了orchard项目,就发现很多这种的匿名方法和lambda表达式。
这是缓存对象时用委托,它
这是建立orchard有时,它使用了Action委托
下面我对Func和Action委托的调用方法用代码说明一下:
1 class Action_Fun的委托用法 2 { 3 string Get1(int key, Func<int, string> acquire); 4 5 string Get2(int key, Func<string> acquire); 6 7 void Set1(int key, Action<string> acquire); 8 9 void Set2(int key, Action acquire); 10 11 /// <summary> 12 /// 一个输入参数,一个返回值的Fun 13 /// </summary> 14 /// <returns></returns> 15 public string Fun1() 16 { 17 return Get1(1, a => 18 { 19 if (a == 1) 20 return "ok"; 21 else 22 return "fail"; 23 }); 24 } 25 /// <summary> 26 /// 只有返回值的Fun 27 /// </summary> 28 /// <returns></returns> 29 public string Fun2() 30 { 31 return Get2(1, () => 32 { 33 return "fail"; 34 }); 35 36 37 } 38 /// <summary> 39 /// 一个输入参数的Action 40 /// </summary> 41 public void Action1(int a) 42 { 43 Set1(a, (i) => //1个参数时,扩括号可以省略 44 { 45 Console.WriteLine(i, a); 46 }); 47 } 48 49 /// <summary> 50 /// 没有参数的Action 51 /// </summary> 52 public void Action2(int a) 53 { 54 Set2(a, () => 55 { 56 Console.WriteLine("您输入的内容是:{0}", a); 57 }); 58 }