我可以在 .NET 中使用某种类似于集合的列表,以允许我在迭代时附加到它吗?
var ls = new List<int>();
ls.Add(5);
foreach (var v in ls) {
if (v > 0)
ls.Add(v - 1);
}
//Alternative
var e = ls.GetEnumerator();
while (e.MoveNext()) {
if (e.Current > 0)
ls.Add(e.Current - 1);
}
最佳答案
为了模仿这样的 foreach
循环,我建议使用 for
循环,同时向后迭代:
for (int i = ls.Count - 1; i >= 0; --i) {
var v = ls[i];
//TODO: put relevant code from existing foreach loop here
}
或者如果你必须循环向前
int n = ls.Count; // we don't want iterate the items appended
for (int i = 0; i < n; ++i) {
var v = ls[i];
//TODO: put relevant code from existing foreach loop here
}
如果您确实想要迭代附加项(请参阅下面的评论),标准的 for
循环就足够了:
for (int i = 0; i < ls.count; ++i) {
var v = ls[i];
//TODO: put relevant code from existing foreach loop here
}
最后,您可以迭代原始列表的副本:
foreach (var v in ls.ToList()) { // ls.ToList() is a shallow copy of the ls
...
}
关于c# - 在 C# 中附加列表时处理列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44869871/