Lambda表达式和C# 2.0介绍的匿名方法类似,不过Lambda表达式更简洁灵活。所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。以下为Lambda表达式的一个例子:
delegate int D1(int i);
D1 myDelegate = x => x + 1;
int j = myDelegate(5); // j = 6
Lambda表达式&匿名方法
我们用一个例子来演示下Lambda表达式,首先用C# 1.0委托,然后用C# 2.0匿名方法,最好把它写成Lambda表达式。
如果我们想要找出所有基于London的客户,我们可以使用下面的C# 1.0委托来实现。
LoadCustomers是一个返回客户集合的方法。
class Customer
{
public string CustomerID { get; set; }
public string CustomerName { get; set; }
public string City { get; set; }
}
static void Main(string[] args)
{
List<Customer> customers = LoadCustomers();
List<Customer> query =
customers.FindAll(new Predicate<Customer>(CityEqualsLondon));
}
static bool CityEqualsLondon(Customer c)
{
return c.City.Equals("London");
}
现在,我们用C# 2.0匿名方法来写这段代码
static void Main(string[] args)
{
List<Customer> customers = LoadCustomers();
List<Customer> query =
customers.FindAll(
delegate(Customer c) { return c.City.Equals("London"); });
}
最后,我们使用C# 3.0的Lambda表达式来重写这段代码
static void Main(string[] args)
{
List<Customer> customers = LoadCustomers();
List<Customer> query =
customers.FindAll(c => c.City.Equals("London"));
}
可以看出Lambda表达式相比而言简洁很多。
其他的信息,请参阅Lambda 表达式(C# 编程指南)
如果您对我们的论坛在线支持服务有任何的意见或建议,请通过
邮件告诉我们。
立刻免费下载
MSDN 论坛好帮手