Счетчики сбрасывают значение индекса

Я пытаюсь перечислить значения 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 ответ

Что ж, ответ очень прост - в моем случае итератор является структурой, и все структуры передаются методам по значению, а не по ссылке. И в моем случае я не могу просто добавить слово ref в параметр, потому что я работаю с использованием заявления.

Спасибо!

Другие вопросы по тегам