是否有某种类似列表的集合,我可以在.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);
}
Run Code Online (Sandbox Code Playgroud)
为了模仿这样的foreach循环,我建议使用for循环,同时向后迭代:
for (int i = ls.Count - 1; i >= 0; --i) {
var v = ls[i];
//TODO: put relevant code from existing foreach loop here
}
Run Code Online (Sandbox Code Playgroud)
或者如果你必须循环前进
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
}
Run Code Online (Sandbox Code Playgroud)
如果你想要itetate附加项(见下面的评论)标准for循环就足够了:
for (int i = 0; i < ls.count; ++i) {
var v = ls[i];
//TODO: put relevant code from existing foreach loop here
}
Run Code Online (Sandbox Code Playgroud)
最后,您可以迭代原始列表的副本:
foreach (var v in ls.ToList()) { // ls.ToList() is a shallow copy of the ls
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |