[我眼中的C#]委托和Lambda表达式
来源:互联网 发布:知乎双肩包推荐 编辑:程序博客网 时间:2024/05/21 19:21
委托是 C#用来传递方法的引用的语法,和类相同,委托调用之前也要经过定义和声明的过程
private delegate string GetString(); static void Main(string[] args) { ////委托是一个类型,这个类型可以赋值一个方法的引用 ////ToString()是object类型的方法 //int x = 40; ////GetString a=new GetString(x.ToString);//没有括号,说明没有调用这个方法,只是传递一个引用 //GetString a = x.ToString; ////string s = a(); //string s = a.Invoke(); //Console.WriteLine(s);//通过委托类型调用一个方法,跟直接调用一个方法是一样的 //使用委托类型作为方法的参数 PrintString method = Method1; PrintStr(method); method = Method2; PrintStr(method); Console.ReadKey(); } private delegate void PrintString(); static void PrintStr(PrintString print) { print(); } static void Method1() { Console.WriteLine("Method1"); } static void Method2() { Console.WriteLine("Method2"); }
使用委托可以先创建匿名方法,但是C#提供了更为简单的方法—Lambda表达式
//Lambda表达式用来代替一个匿名方法,所以一个lambda也是定义了一个方法 Func<int, int, int> plusFunc = (arg1, arg2) =>//lambda表达式的参数是不要声明类型的 { return arg1 + arg2; }; Console.WriteLine(plusFunc(9,6)); Func<int, int> testFunc = a => a+1;//lambda表达式的参数只有一个的时候可以不加上括号,当函数体的语句只有依据的时候,可以不加上大括号,也可以不加上return语句 Func<int, int> test2Func = (a) => { return a + 1; }; Console.ReadKey();
0 0
- [我眼中的C#]委托和Lambda表达式
- 16.C#:Lambda表达式和委托
- 我眼中的委托
- [我眼中的C#]正则表达式
- 委托、Lambda表达式和事件
- 委托,Lambda表达式和事件
- 委托、Lambda表达式和事件
- 委托,lambda表达式和事件
- 委托、Lambda表达式和事件
- [深入学习C#]匿名函数、委托和Lambda表达式
- 委托、匿名委托和lambda表达式
- [我眼中的C#]String和StringBuilder
- [我眼中的C#]XML和JSON
- [我眼中的C#]反射和特性
- C#的委托,匿名方法和Lambda表达式
- 我和我的委托(C#)
- 详解C#委托、时间和Lambda表达式
- 解析C#委托、时间和Lambda表达式
- (凸优化理论学习笔记2017/3/17)Theory of Convex Optimeization for Machine Learning(Sebatien Bubeck)
- 在mysql的where使用group_concat
- 彻底理解android中的内部存储与外部存储
- Rx常用操作符
- rx+retrofit 学习笔记
- [我眼中的C#]委托和Lambda表达式
- 【LeetCode】520. Detect Capital
- linux init_task 的初始化
- CSDN博客页面去广告的解决
- MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数
- NOIP普及2016悲惨翻车记
- Jmeter使用流程及简单分析监控
- apt-get出现失败时
- ee