Как .net определяет порядок для цикла foreach? - PullRequest
1 голос
/ 26 апреля 2011

Когда я использую оператор foreach в C # .net, как .net определяет, в каком порядке обрабатывать элементы в коллекции?

Ответы [ 2 ]

10 голосов
/ 26 апреля 2011

Когда вы используете foreach, объект, который реализует IEnumerable или IEnumerable<T>, «повторяется».Порядок определяется реализацией объекта IEnumerable.

. Любой класс может настроить порядок, в котором это происходит.Например, с List<T> это в порядке списка (по индексу).Однако некоторые классы, такие как Dictionary<T,U>, не гарантируют заказ вообще - только то, что каждый элемент будет перечислен через один раз, так как предоставление гарантии заказа в этом случае резко снизит производительность.

1 голос
/ 26 апреля 2011

Используются интерфейсы IEnumerable и IEnumerator. Они предоставляют значения один за другим, поэтому .Net не нужно заботиться о порядке. Он обрабатывает значения только в том порядке, в котором они были доставлены.

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