次のコードがあります。
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 1; i < 5; i++)
{
Button btn = new Button();
btn.ID = "button-" + i.ToString();
btn.Text = "This is button-" + i.ToString();
btn.Click += (senders, es) => test(i, PlaceHolder1, btn.ID);
PlaceHolder1.Controls.Add(btn);
}
}
protected void test(int num, PlaceHolder ph, string btnID)
{
Response.Write("The Button clicked on is: " + num);
}
なんらかの理由で、ボタンのいずれかをクリックするたびに、変数「num」に渡される数値が常に5であることを理解できないようです。誰もがなぜこれが起こるのか知っていますか? または、実際の数値を「num」に割り当てないのはなぜですか?