那么我正在通过'Lambda表达式'主题(第17章;代表,代表C#语法糖)。杰弗里指出,C#编译器具有以下后台创建一个新的非静态类:Lambda表达式:编译器行为
- 字段来存储所有已在Lambda表达式被访问的局部变量。
- 一种方法,其主体包含Lambda表达式,其签名/返回类型与已使用Lambda Expressin的委托相匹配。
我有以下两个问题:
我做了一些调试自己,看到的是,如果Lambda表达式修改局部变量的值(在方法定义的拉姆达Expresison正在用于),新的值也反映在表达式体外。考虑到表达式实际上是在不同的类中,这怎么可能?
为什么发出的类需要非静态时,静态类完全可以做到这一点?
我希望这不是一个非常简单的概念,我无法理解。
让我知道是否需要提供更多的细节。
很棒的回答。谢谢。 – astraldust 2013-03-14 10:29:40
不客气,欢呼声。 – Freeman 2013-03-14 10:30:11