P.K*_*P.K 0 c# lambda predicate
我最近搬到了.net 3.0(Windows窗体,C#).我想更多地了解谓词和lambda表达式.我们应该在哪里使用它们?他们是否提高了表现?以及他们如何在内部工作.谢谢.
如果你搜索Stack Overflow,你会发现大约一千个答案,解释它们的用途.简而言之 - lambda是一种在您希望将其传递给另一个方法的位置编写匿名方法的方法.技术上与delegate匿名方法的语法相同,虽然具有类型推断的附加功能,因此您不需要声明参数类型.谓词是一种接受某个值并返回一个的方法bool- 一个例子就是参数Where.
不引用任何外部变量的lambda将转换为具有虚构名称的私有静态方法.如果它引用封闭类的实例成员,它将成为实例方法.如果它引用局部变量,那些变量将被"提升"为编译器生成的类的字段,该类在封闭方法开始运行时分配,并且lambda的主体成为该新类中的方法.
至于表现,他们并没有那么大的差别.它们涉及临时对象的创建,但我发现GC可以非常有效地收集这些对象.