Я исхожу из функционального программирования на данный момент, так что простите меня, если я не понимаю закрытия в С#.
У меня есть следующий код для динамического генерации кнопок, которые получают анонимные обработчики событий:
for (int i = 0; i < 7; i++)
{
Button newButton = new Button();
newButton.Text = "Click me!";
newButton.Click += delegate(Object sender, EventArgs e)
{
MessageBox.Show("I am button number " + i);
};
this.Controls.Add(newButton);
}
Я ожидал, что текст "I am button number " + i
будет закрыт со значением i
при этой итерации цикла for. Однако, когда я фактически запускаю программу, каждая кнопка говорит I am button number 7
. Что мне не хватает? Я использую VS2005.
Изменить: Итак, я думаю, мой следующий вопрос: как мне получить значение?