C#中的委托,匿名方法和Lambda表达式

  简介

  在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆。我想下面的代码能证实这点。下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不仅被编译,并都获得正确答案,且他们的结果一样。如果你对此感到困惑,那么请继续看这篇文章。

class Customer 
{
public int ID { get; set; }
public static bool Test(Customer x)
{
return x.ID == 5;
}
}
...
List
<Customer> custs = new List<Customer>();
custs.Add(
new Customer() { ID = 1 });
custs.Add(
new Customer() { ID = 5 });

custs.First(
new Func<Customer, bool>(delegate(Customer x) { return x.ID == 5; }));
custs.First(
new Func<Customer, bool>((Customer x) => x.ID == 5));
custs.First(
delegate(Customer x) { return x.ID == 5; });
custs.First((Customer x)
=> x.ID == 5);
custs.First(x
=> x.ID == 5);
custs.First(Customer.Test);

NET技术C#中的委托,匿名方法和Lambda表达式,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。