У меня есть код, подобный следующему:
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
в обработчике спойл-сыра.Могу ли я безопасно проигнорировать это в этом случае?
Я ожидаю, что счетчик сыра будет изменен между вызовами первого закрытия, но я не уверен, что происходит, когда код, выполняющий изменение, находится во второмзамыкание вокруг той же переменной.