Порядок сортировки при использовании foreach на массиве, перечислите и т.д.

Ты пробовал с помощью нажатия клавиш ... нажата клавиша - зло

5
задан Jakob Christensen 24 March 2009 в 16:26
поделиться

3 ответа

Я должен был бы не согласиться со всеми ответами до сих пор.

Во-первых, стандарт C# 3.0 гарантирует порядок foreach на массиве:

Порядок, в котором foreach пересекает элементы массива, следующие: Для одно-мерных массивов элементы пересечены в увеличивающемся индексном порядке, начиная с индекса 0 и заканчивающийся индексной Длиной – 1. Для многомерных массивов элементы пересечены таким образом, что индексы самого правого размера увеличены сначала, затем следующий левый размер, и так далее налево.

- Версия 3.0 Спецификации языка C#, страница 240.

Во-вторых, на объектах, foreach (C#) и Для Каждого (VB.NET) работают при помощи MoveNext, Сброса и текущих элементов на объекте (источник). Это обычно часть интерфейса IEnumerator.

В наборах, которые имеют порядок (чтение: вещи, которые реализуют IList или IList (T)), это означает, что элементы будут возвращены в порядке, что запоминающее устройство хранит их.

20
ответ дан 18 December 2019 в 06:23
поделиться

Нет никаких гарантий. Большинство реализаций списка/массива будет возвращать значения в порядке, но существуют определенно исключения, особенно в некоторых менее общих классах набора. (Например, в C5, много наборов возвращают значения в совсем других заказах, чем они были добавлены при перечислении.)

5
ответ дан 18 December 2019 в 06:23
поделиться

Никакая гарантия дизайном. foreach предназначается для перечисления без порядка и подразумевает, что время выполнения могло бы даже обработать несколько элементов параллельно. Вы никогда не должны полагаться ни на какой порядок перечисления.

0
ответ дан 18 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: