Могу ли я иметь List (T) .ForEach (), который проходит элементы строго по порядку? - PullRequest
5 голосов
/ 06 июля 2011

Есть List(T).ForEach(), который выполняет действие для каждого элемента списка. Однако в описании MSDN ничего не говорится о порядке, в котором элементы List будут проходить, и мне нужно, чтобы они проходили строго по порядку.

Как мне добиться этого с ForEach()?

Ответы [ 3 ]

13 голосов
/ 06 июля 2011

List<T>.ForEach будет идти в том же порядке, что и обычный цикл foreach, что также является естественным порядком списка.

Да, в документации об этом не говорится, но это очевидное поведение, и я думаю, что вполне разумно полагаться на то, что оно не меняется.

(Теперь Parallel.ForEach - это другое дело, конечно.)

2 голосов
/ 06 июля 2011

Если порядок элементов важен, я бы порекомендовал использовать Queue<T> (LIFO) или Stack<T> (FIFO), которые обеспечивают порядок по дизайну.В этом случае вы должны использовать классический цикл вместо метода расширения LINQ или реализовать его самостоятельно.

1 голос
/ 06 июля 2011

Класс List<T> представляет упорядоченную коллекцию элементов, поэтому итерирование с использованием перечислителей или ForEach метода сохранит порядок , даже если документация по этому вопросу не очень ясна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...