Обратный возвращает обратную последовательность.Это не меняет оригинал.Попробуйте что-то вроде этого, чтобы создать новую очередь из обращенных элементов:
currentPath = new Queue<T>(currentPath.Reverse());
Когда в документации говорится о вызове GetEnumerator, это означает, что для IEnumerable, который был возвращен Reverse ():
IEnumerable reversed = currentPath.Reverse();
IEnumerator reversedEnumerator = reversed.GetEnumerator();
// Now reversedEnumerator has assembled the reversed sequence,
// we could change the contents of currentPath and it wouldn't
// affect the order of items in reversedEnumerator.
Конечно, редко нужен такой счетчик, потому что foreach
сделает это для нас под одеялом:
IEnumerable reversed = currentPath.Reverse();
foreach (var item in reversed)
{
// ...
}
Или действительно, как в моемВ первом примере мы можем передать обратное перечисляемое значение конструктору коллекции, например Queue
или List
, и позволить ему выполнить итерацию:
currentPath = new Queue<T>(currentPath.Reverse());