List<CormantRadPane> panesToSave = new List<CormantRadPane>();
foreach (KeyValuePair<string, RadPaneSetting> paneState in RadControlStates.PaneStates)
{
CormantRadPane pane = Utilities.FindControlRecursive(Page, paneState.Key) as CormantRadPane;
panesToSave.Add(pane);
}
foreach (CormantRadPane pane in panesToSave)
{
RadControlSave.SavePane(pane);
}
RadControlSave.SavePane(pane) 修改 RadControlStates.PaneStates 集合。在这种情况下,有没有更好的方法来编写这段代码?
编辑:每个人都请阅读我在上面写的字面意思。 Jimmy 发布了一个我没有考虑过的明显解决方案——在迭代之前创建集合的副本,这样 RadControlSave 就不会修改正在迭代的集合。
最佳答案
一种方法是在 PaneStates 上调用 ToArray()(制作一个副本,因为您不能修改 foreach 中的序列)
foreach(var state in RadControlStates.PaneStates.ToArray()) {
var pane = Utilities.FindControlRecursive(Page, state.Key) as CormantRadPane;
RadControlSave.SavePane(pane);
}
关于c# - 编写此代码的更好方法而不是 2x foreach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302173/