私は現在関数型プログラミングのバックグラウンドを持っているので、C#のクロージャを理解していない場合はご容赦ください。
匿名のイベントハンドラーを取得するボタンを動的に生成するための次のコードがあります。
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);
}
forループのその反復での値でテキスト"I am button number " + i
が閉じられることを期待していました。i
ただし、実際にプログラムを実行すると、すべてのボタンに「」と表示されI am button number 7
ます。私は何が欠けていますか?VS2005を使用しています。
編集:それで、私の次の質問は、どうすれば価値を捉えることができるかということだと思います。