0
我想列举List的值在不同的方法(只发送迭代器作为参数)。它运行良好,但令我惊讶的是,它在索引值退出方法后重置为1。这里有一个例子 - 你能向我解释它是如何工作的以及如何解决它?枚举器重置索引的值
太谢谢你了!
public void SaveHistory(string folder)
{
using (var iterator = Items.GetEnumerator())
{
foreach (var file in _files)
if (!Proceed(Path.Combine(folder, file.Name), iterator)) //first call
break;
//AND HERE my iterator.Index value is 1 again.
while (Proceed(GetNewFileName(folder), iterator)) { }
}
}
private bool Proceed(string fileName, IEnumerator<HistoryItemBase> iterator)
{
var dose = new List<HistoryItemBase>();
if (iterator.MoveNext())
{
while (dose.Count < LogFileItemsCount && iterator.MoveNext())
dose.Add(iterator.Current);
//DO Something
}
return false; //<- Here iterator.MoveNext() returns false and it's index value is ok
}
[这是一个结构](http://stackoverflow.com/questions/3168311/why-do-bcl-collections-use-struct-enumerators-not-classes),[通过引用](http:///stackoverflow.com/questions/16614704/pass-c-sharp-struct-by-reference)或考虑一个不需要完全绕过枚举器的不同设计。 – CodeCaster
是的..只有在提出问题之后才明白..工作到晚上是个好主意:)但是非常感谢你的回答! –