枚举器重置索引的值

时间:2016-03-06 22:10:54

标签: c# list ienumerator

我试图在不同的方法中枚举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
}

1 个答案:

答案 0 :(得分:0)

嗯,答案很简单 - 在我的情况下,iterator是一个结构,所有结构都按值传递给方法,而不是引用..在我的情况下,我不能只为参数添加一个参考词,因为我我正在使用using语句。

谢谢!