C#的lambda表达式只存在于编译时吗?

16

我说lambda表达式只存在于编译时,一旦编译完成后它们就会变成一个表达式(LambdaExpression?)或一个委托,这样说对吗?


6
C#中的lambda表达式会被编译成一个匿名方法的实例,并存在堆栈帧中。 - Christian Phillips
1个回答

16

是的。除了委托,lambda表达式还会生成一个方法。委托引用该方法。如果它们闭合了变量,则该方法成为保存闭包状态的生成类上的实例方法。

在这种意义上,您可以使用lambda表达式和局部变量创建一个具有字段和一个方法的类,类似于JavaScript。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接