這是從Access到Modified Closure的擴展。我只想驗證以下內容是否真的足夠安全用于生產。List<string> lists = new List<string>();//Code to retrieve lists from DB foreach (string list in lists){ Button btn = new Button(); btn.Click += new EventHandler(delegate { MessageBox.Show(list); });}每次啟動我只會執(zhí)行一次以上操作。目前看來,它工作正常。正如喬恩(Jon)在某些情況下提到的違反直覺的結果。那么,我需要在這里注意什么?如果列表多次運行,可以嗎?
3 回答

aluckdog
TA貢獻1847條經驗 獲得超7個贊
這很棘手,但是上面的解釋對我來說很清楚: 這似乎是正確的,但實際上,每當單擊任何按鈕時,只會使用str變量的最后一個值。這樣做的原因是foreach進入了while循環(huán),但是迭代變量是在該循環(huán)之外定義的。這意味著,當您顯示消息框時,str的值可能已經被迭代為字符串集合中的最后一個值。
- 3 回答
- 0 關注
- 466 瀏覽
添加回答
舉報
0/150
提交
取消