相同值I要綁定的一組回調函數來GUI在C#元素,每個調用用不同的參數相同的處理功能。事件處理總是調用與foreach循環
拼寫出的方式
# Assign element #1 to widget
widget.Click +=() => {ProcessClick(1) ;} ;
# Assign element #2 to widget
widget.Click +=() => {ProcessClick(2) ;} ;
...
似乎是多餘的。然而,
Widget widget ;
foreach (int i in new List<int>() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
{
# Assign element i to widget
widget.Click +=() => {ProcessClick(i) ;} ;
}
一個天真的循環將無法工作,因爲循環將已經過期的任何一次回調被調用,導致ProcessClick(9)
爲每個插件的調用。
我覺得應該有一個簡單的解決方案,但我卡住了。
如何將回調函數綁定到GUI元素,每個GUI元素都使用不同的參數調用函數,而不將它們全部拼寫出來?
很多來自Eric Lippert的關於此主題的有用內容http://blogs.msdn.com/b/ericlippert/archive/tags/closures/ – DavidG 2014-09-22 12:24:36