我对C#中的Lambda表达式还比较陌生,因为不知道除了减少代码量之外还有什么好处,所以很少使用它们。它们在某些/所有情况下是否更有效率?或者它们能够实现超越将更多代码放在一行内的fantastic things吗?
我对C#中的Lambda表达式还比较陌生,因为不知道除了减少代码量之外还有什么好处,所以很少使用它们。它们在某些/所有情况下是否更有效率?或者它们能够实现超越将更多代码放在一行内的fantastic things吗?
它们在某些/所有情况下更有效吗?
总的来说,Lambda表达式并不是关于性能效率,而是关于开发者效率。
它们是一种比手动编写方法更高效的创建方法的方式。尽管如此,它们无法(直接)提高性能。
然而,通过正确地利用以函数方式工作的框架(例如:使用LINQ),您可以增加编写高效代码的可能性,因为该框架本身很可能进行了高度优化。
Lambda表达式并不是更高效的,它们只是更简单。它们主要用于:
当创建一个委托时,编译器创建的代码就像您创建了一个命名方法,并获得了该方法的委托一样。
Func<int, int> mul = n => n * 2;
相比之下:
public static int Mul(int n) {
return n * 2;
}
Func<int, int> = Mul;
int x = 2;
Func<int, int> mul = n => n * x;
相较于:
public class Closure {
public int x;
public int Mul(int n) {
return n * x;
}
}
Closure c = new Closure;
c.x = 2;
Func<int, int> mul = x.Mul;