Кто-нибудь знает, есть ли конкретная причина или дизайнерское решение, чтобы не включать обратный счетчик в С#? Было бы так приятно, если бы был эквивалент С++ reverse_iterator
, так как Enumerator является эквивалентом С++ iterator
. Коллекции, которые могут быть обратными итерациями, будут просто реализовывать что-то вроде IReverseEnumerable, и можно было бы сделать что-то вроде:
List<int>.ReverseEnumerator ritr = collection.GetReverseEnumerator();
while(rtir.MoveNext())
{
// do stuff
}
Таким образом, вы могли бы выполнять итерацию списков и LinkedLists таким же образом, а не использовать индексатор для одной и предыдущих ссылок для другого, тем самым обеспечивая лучшую абстракцию