委托与事件(三)
除了使用delegate关键字定义委托,还可以使用系统关键字Action、Func和Predicate直接使用委托
Action(无返回值):
(1)使用匿名方法调用委托:
1 /****************使用匿名方法**************/
2 Action<string> action = delegate(string str)
3 {
4 Console.WriteLine(str);
5 };
6 action("Parameters");
(2)使用Lambda表达式调用委托:
1 /****************使用Lambda表达式**************/
2 Action<string> action = (string str) =>
3 {
4 Console.WriteLine(str);
5 };
6 action("Parameters");
(3)调用无参方法:
- 方法体:
1 private static void ShowMsg()
2 {
3 Console.WriteLine("Action无参无返回!");
4 }
- 通过Action调用方法:
1 Action action = ShowMsg;
2 action();
(4)调用带参数的方法:
- 方法体:
1 private static void ShowMsg(string msg)
2 {
3 Console.WriteLine("Action单参无返回!参数为:{0}", msg);
4 }
- 通过Action调用方法:
1 /****************使用带参数方法**************/
2 Action<string> action = new Action<string>(ShowMsg);
3 action("测试");
Func(有返回值)
(1)使用匿名方法调用委托:
1 Func<string> func = delegate()
2 {
3 return "测试Func";
4 };
5 string strReturn = func();
6 Console.WriteLine(strReturn);
7 //输出
8 //--> 测试Func
(2)使用Lambda表达式调用委托:
1 Func<string> func = ()=>
2 {
3 return "测试Func";
4 };
5 string strReturn = func();
6 Console.WriteLine(strReturn);
7 //输出:
8 //-->测试Func
(3)调用无参方法
- 方法体:
1 private static string GetString()
2 {
3 return "测试Func";
4 }
- 通过Func调用方法:
1 Func<string> func = GetString;
2 string str = func();
3 Console.WriteLine(str);
4 //输出
5 //-->测试Func
(4)调用单参方法:
- 方法体:
1 private static string GetUpperString(string str)
2 {
3 return str.ToUpper();
4 }
- 通过Func调用方法
1 Func<string, string> func = GetUpperString;
2 string strReturn = func("test");
3 Console.WriteLine(strReturn);
4 //输出:
5 //-->TEST
Predicate(单参返回bool类型)
- 方法体:
1 private static bool IsLarger(int number)
2 {
3 if (number > 100)
4 return true;
5 else
6 return false;
7 }
- 通过Predicate调用方法:
1 Predicate<int> predicate = IsLarger;
2 bool status = predicate(100);
3 Console.WriteLine(status);
4 //输出:
5 //-->False
菜鸟一枚,但有一颗不断进取的心;
兴趣所至,相信自己终会成功!!!!!
加油,imstrive