Lambda表达式可以代替委托,我不确定这是一个好方法,我认为它比代表更方便,但我不是确定这是个好主意。
使用 lambda表达式代替委托是不是一个好主意?
答案 0 :(得分:10)
从编译器的角度来看,它没有任何区别。
从开发人员的角度来看,lamba表达式在大多数情况下都提高了可读性。
答案 1 :(得分:8)
为自己和其他开发人员编写代码,而不是为您的计算机编写代码。
如果在你的情况下更容易理解lambda,那么这是一个不错的选择。
无论如何,大多数lambda表达式都将被编译为委托。 (不包括表达式树)
答案 2 :(得分:4)
您可以通过多种不同的方式创建委托实例:
使用C#3 lambda表达式:
Func<int> getFive = () => 5;
使用C#2匿名方法语法:
Func<int> getFive = delegate { return 5 };
使用非匿名方法(自C#1以来可用):
int GetFive()
{
return 5;
}
…
Func<int> getFive = GetFive;
我认为其中每一项都有其用途。
delegate { }
语法的优点是,如果您不需要参数,则无需声明参数。
Lambda表达式非常简洁,可以转换为表达式而不是委托,这对于LINQ-to-some-DB非常有用,并且意味着您可以使用相同的语法来查询内存中的结构和数据库。
使用非匿名方法意味着您可以轻松地重复使用它们,并且也适用于长方法。
上述所有案例均转换为等效代码。唯一的区别是您是否可以看到该方法。
lambda表达式和匿名方法也可以是闭包,即它们可以捕获局部变量。
答案 3 :(得分:1)
yes
。您可以按lambda
进行委托,减少代码行数并使代码可读