(第三季)209-Lambda表达式
来源:互联网 发布:毕向东 java 编辑:程序博客网 时间:2024/04/28 12:38
Lambda表达式-表示一个方法的定义
从C#3.0开始,可以使用Lambda表达式代替匿名方法。只要有委托参数类型的地方就可以使用Lambda表达式。刚刚的例子可以修改为
Func<int,int,int>plus = (a,b)=>{ int temp= a+b;return temp; };
intres = plus(34,34);
Console.WriteLine(res);
Lambda运算符“=>”的左边列出了需要的参数,如果是一个参数可以直接写 a=>(参数名自己定义),如果多个参数就使用括号括起来,参数之间以,间隔
多行语句1,如果Lambda表达式只有一条语句,在方法快内就不需要花括号和return语句,编译器会自动添加return语句
Func<double,double> square = x=>x*x;
添加花括号,return语句和分号是完全合法的
Func<double,double> square = x=>{
return x*x;
}
2,如果Lambda表达式的实现代码中需要多条语句,就必须添加花括号和return语句。
Lambda表达式外部的变量通过Lambda表达式可以访问Lambda表达式块外部的变量。这是一个非常好的功能,但如果不能正确使用,也会非常危险。示例:
intsomVal = 5;
Func<int,int>f = x=>x+somVal;
Console.WriteLine(f(3));//8
somVal= 7;
Console.WriteLine(f(3));//10
这个方法的结果,不但受到参数的控制,还受到somVal变量的控制,结果不可控,容易出现编程问题,用的时候要谨慎。
/**/using System;namespace CatCry{ class MainClass { static int Test1(int arg1, int arg2) { return arg1 + arg2; } static void Main() { //Func<int, int, int> plus = Test1; /* // 修改成: 匿名方法 的形式 Func<int, int, int> plus = delegate (int arg1, int arg2) { return arg2 + arg1; }; // 匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法赋值 */ // Lambda表达式 用来 代替 匿名方法 ,所以一个Lambda表达式也是定一个方法 Func<int, int, int> plus = (arg1, arg2) => // Lambda表达式的参数不需要申明类型 { return arg1 + arg2; }; Func<int, int> test2 = a => a + 1; // Lambda表达式的参数只有一个的时候 // 可以不加上括号,当函数体的语句只有一句的时候,我们可以不加上大括号 也可以不加上return语句 Func<int, int> test3 = (a) => { return a + 1; }; Console.ReadKey(); } }}
- (第三季)209-Lambda表达式
- 第三章Lambda表达式
- Lambda Expressions(Lambda表达式)
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- lambda表达式
- lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- Lambda 表达式
- Lambda 表达式
- Lambda表达式
- fresco之producer的具体实现
- (function(){})();(function(){}());!function(){}();
- java BigInteger BigDecimal类
- 利用栈的特性,将十进制数转换成八进制数
- python条件语句嵌套
- (第三季)209-Lambda表达式
- Fresco之Producer和DataSource之间适配器处理的逻辑
- poj1979 简单bfs
- HTML 表单和输入
- ARM9学习之调试
- 绕过WAF的SQL注入语句
- linux下apache+tomcat配置
- Huffman编码解压缩的通俗讲解
- iOS 闪退与内存管理