我试图在迭代时将新元素添加到列表列表中
List<List<String>> sets = new List<List<string>>();
foreach (List<String> list in sets)
{
foreach (String c in X)
{
List<String> newSet = ir_a(list, c, productions);
if (newSet.Count > 0)
{
sets.Add(newSet);
}
}
}
我在几个循环之后得到的错误是:
Collection was modified; enumeration operation may not execute
我知道错误是由修改列表引起的,所以我的问题是:什么是排序这个东西的最佳或最奇特的方式?
由于
答案 0 :(得分:6)
你可能会在其他语言中使用它而不是C#。他们这样做是为了避免有趣的运行时行为,这些行为并不明显。我更喜欢设置一个新的列表,列出你要添加的内容,填充它,然后在循环后插入它。
public class IntDoubler
{
List<int> ints;
public void DoubleUp()
{
//list to store elements to be added
List<int> inserts = new List<int>();
//foreach int, add one twice as large
foreach (var insert in ints)
{
inserts.Add(insert*2);
}
//attach the new list to the end of the old one
ints.AddRange(inserts);
}
}
想象一下,如果你有一个foreach循环,并且每次都向它添加一个元素,那么它永远不会结束!
希望这会有所帮助。