Zastanawiałem się nad kolejnością, w jakiej pętla foreach w języku C # przechodzi przez System.Collections.Generic.List<T>
obiekt.
Znalazłem kolejne pytanie na ten sam temat, ale nie czuję, że odpowiada na moje pytanie w sposób satysfakcjonujący.
Ktoś twierdzi, że nie określono żadnego porządku. Ale jak twierdzi ktoś inny, kolejność przechodzenia przez tablicę jest stała (od 0 do Length-1). 8.8.4 Oświadczenie foreach
Mówiono też, że to samo dotyczy wszystkich klas standardowych z kolejnością (np List<T>
.). Nie mogę znaleźć żadnej dokumentacji, która by to potwierdzała. Więc z tego co wiem, teraz może tak działać, ale może w następnej wersji .NET będzie inaczej (nawet jeśli może to być mało prawdopodobne).
Spojrzałem też na List(t).Enumerator
dokumentację bez powodzenia.
Inne powiązane pytanie stwierdza, że w przypadku języka Java jest to wyraźnie wymienione w dokumentacji:
List.iterator()
zwraca iterator po elementach tej listy w odpowiedniej kolejności. "
Szukam czegoś takiego w dokumentacji C #.
Z góry dziękuję.
Edycja: Dziękuję wszystkim za wszystkie odpowiedzi (niesamowite, jak szybko otrzymałem tak wiele odpowiedzi). Ze wszystkich odpowiedzi rozumiem, że List<T>
zawsze zmienia się kolejność indeksowania. Ale nadal chciałbym zobaczyć wyraźny spokój dokumentacji stwierdzającej to, podobnie jak w dokumentacji JavaList
.