首页 > 代码库 > lambda表达式学习笔记(1) -- 作为委托的lambda表达式
lambda表达式学习笔记(1) -- 作为委托的lambda表达式
C#中的Lambda表达式就是C# 2中匿名方法的演变,因此从一个匿名函数开始一步步简化写法。
例子是获取一个string参数,然后返回一个int。
首先匿名方法的写法如下:
Func<string, int> returnLength; returnLength = delegate (string text) { return text.Length; }; Console.Write(returnLength("Hello"));
lambda表达式最冗长的形式是:
(显式类型的参数列表) => {语句} (=> 可以看成是 goes to )
上面例子lanbda表达式的写法就可以写成是:
Func<string, int> returnLength; returnLength = (string text) => { return text.Length; }; Console.Write(returnLength("Hello")); Console.Read();
这种写法和匿名方法非常相似
除了用如上的代码块的形式来返回值,大多数时候都可以用一个表达式来表示整个主体,该表达式的值就是lambda的结果,格式就变为:
(显式的参数列表) => 表达式
上面的例子就变为
Func<string, int> returnLength; returnLength = (string text) => text.Length;
由于编译器已经强大到可以很轻松的猜出参数类型,所以在这种情况下可以进一步简化为:
(隐式类型的参数列表) =>表达式
上面的例子就变为:
Func<string, int> returnLength; returnLength = (text) => text.Length;
到目前已经相当简短了,但是在一个参数的情况下,这个括号还有点碍眼,那就可以继续简化:
参数名=>表达式
例子的lambda表达式的最终形式就是:
Func<string, int> returnLength; returnLength = text => text.Length;
lambda表达式学习笔记(1) -- 作为委托的lambda表达式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。