【发布时间】:2016-06-19 21:37:56
【问题描述】:
我有这个代码:
for (int i = 0; i < 7; ++i)
Roption.DropDownItems.Add(string.Concat("Item &", i), null, delegate { Reset(i); });
点击下拉项时调用Reset()。
问题是无论点击哪个下拉项,传递给Reset的参数都是7(循环终止后i的值),而不是Roption.DropDownItems.Add函数时i的值叫做。是什么导致了这种行为,如何解决? (我真的不想在七个相同的语句中硬编码 0 到 6)。
【问题讨论】:
-
复制变量
i这样i1 = i并将i1传递给reset 方法... stackoverflow.com/questions/271440/… -
行得通,谢谢!
标签: c# events delegates anonymous-function