C#3.0 lambda表达式
2013-07-30 10:19
134 查看
初识lambda表达式
//使用C#2.0中的匿名方法查找“内部包含abc子串的所有字符串”list.FindAll(delegate(string s) { return s.IndexOf("abc") >= 0; });
//使用C#3.0中的lambda表达式查找“内部包含abc子串的所有字符串”
list.FindAll(s => s.IndexOf("abc") >= 0);
说明:
整个lambda是一个值,这个值是委托类型(或者说可以转换为委托类型的对象)
lambda表达式格式
lambda表达式格式为:(参数列表)=>表达式或者语句块。可以有多个参数、一个参数、或者无参数。参数类型可以隐式或者显式。例如:
lambda表达式格式要点
lambda表达式的参数类型可以忽略,因为可以根据使用的上下文进行推断。lambda表达式的主体(body)可以是表达式,也可以是语句块。
lambda表达式传入的实参将参与类型推断,以及方法重载辨析。
lambda表达式和表达式体可以被转换为表达式树。
lambda表达式与委托类型
lambda表达式L可以被转换成委托类型D,需要满足以下条件:L和D拥有相同的参数个数。
L的参数类型要与D的参数类型相同,注意隐式类型要参数与类型辨析。
D的返回类型与L相同,无论L是表达式还是语句。
举例:
已经有这样的定义:
public class MyClass
{
public static void Process(MyDelegate d);
}
delegate int MyDelegate(int n);
调用:MyClass.Process(x=>x*10); 它所表示的:
public static int X(int n)
{
return n * 10;
}
MyDelegate md = new MyDelegate(X);
MyClass.Process(md);
相关文章推荐
- C#3.0-Lambda表达式
- c#3.0 Lambda 表达式
- C#3.0语言新特性之Lambda表达式
- C#3.0语言新特性之Lambda表达式
- C#3.0技术探讨(6) :Lambda表达式 Lambda Expressions
- C#3.0语言新特性之Lambda表达式(zhuan)
- C#3.0语言新特性之Lambda表达式
- LINQ To SQL深入学习系列之一(C#3.0为LINQ的加强之一Lambda 表达式)
- [易学C#]C#3.0语言新特性之Lambda表达式
- 实例 C#3.0与C#2.0相比之新特性(四) Lambda 表达式
- c#3.0新特性(二):Lambda表达式
- [ZZ]C#3.0语言新特性之Lambda表达式
- c#3.0新特性使用lambda表达式创建表达式树
- C#3.0亮点 —— lambda表达式
- C#3.0之Lambda表达式
- [易学C#]C#3.0语言新特性之Lambda表达式(转)
- C#3.0新体验(五)Lambda表达式
- C#3.0-Lambda表达式
- python -- lambda表达式
- 深入解析Python中的lambda表达式的用法