C# Lambda表达式:编译器行为
我要讲的是“Lambda表达式”主题(第17章:代表,C#代表的语法糖)。Jeffery指出,C#编译器在后台创建一个新的非静态类,该类具有以下内容:C# Lambda表达式:编译器行为,c#,lambda,C#,Lambda,我要讲的是“Lambda表达式”主题(第17章:代表,C#代表的语法糖)。Jeffery指出,C#编译器在后台创建一个新的非静态类,该类具有以下内容: 用于存储Lambda表达式中已访问的所有局部变量的字段 一种方法,其主体包含Lambda表达式,其签名/返回类型与已使用Lambda表达式的委托匹配 我有以下两个问题: 我自己做了一些调试,发现如果Lambda表达式修改局部变量的值(在Lambda Expresison正在使用的方法中定义),那么新值也会反映在表达式体之外。考虑到表达式实际上在不
如果我需要提供更多细节,请告诉我。首先,几天前我有一个类似的问题 第二,让它成为一个静态类有什么意义?无论如何,只创建一个对象,并且该对象不必在应用程序生命周期内存在
新值也反映在表达式体之外。考虑到表达式实际上在不同的类中,这怎么可能呢。
问题是,同一个对象同时被anonymus方法以及anonymus方法外部的局部变量引用,所以无论从何处更改它,都是更改同一个对象
此外,Tim Goodman在我所链接的问题中提供的答案向您展示了如何通过在匿名方法中创建新对象来避免到处反映更改