【发布时间】:2011-07-29 19:05:05
【问题描述】:
我有如下代码:
private void SetupCheeseShop(Button buyCheese, Button spoilCheese)
{
var cheeseCount = 0; // No cheese
spoilCheese.Click += (sender, e) => {
// "Access to Modified Closure" warning occurs for cheeseCount below:
MessageBox.Show(string.Format("{0} cheeses have spoiled", cheeseCount));
cheeseCount = 0; // Throw out moldy cheese
};
buyCheese.Click += (sender, e) => {
cheeseCount++;
};
}
ReSharper 警告我,当我在糟蹋奶酪处理程序中读取 cheeseCount 时,我正在访问一个修改后的闭包。在这种情况下我可以放心地忽略它吗?
我希望在对第一个闭包的调用之间修改奶酪计数,但我不确定当进行修改的代码在同一个变量周围的第二个闭包中时会发生什么。
【问题讨论】: