我有一个 Dictionary<string,string>
然后我遍历它的 KeyValuePairs。但我的问题是我需要在某个时候停止迭代并从同一位置继续迭代。我的代码如下。
for(i = 0; i<5; i++)
{
foreach(var pair in dictionary) /* continue from iterators last position */
{
/* do something */
if(consdition) break;
}
}
代码不是很清楚,但我希望我正在尝试做的是。我该怎么办?
最佳答案
你可以放弃 foreach
并致力于 IEnumerator<T>
直接。
using (IEnumerator<<KeyValuePair<K,V>> enumerator = dict.GetEnumerator())
{
while (enumerator.MoveNext())
{
DoSomething(enumerator.Current);
if (condition)
break;
}
while (enumerator.MoveNext())
{
DoMoreWork(enumerator.Current);
}
}
但您可能会考虑重构代码,以便 foreach
是外环。这可能更容易和更清洁。
int i=0;
foreach(var pair in dictionary)
{
if(condition)
{
DoSomething();
i++;
if(i<5)
continue;
else
break;
}
}
关于c# 获取迭代器在字典中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983196/