Как List <T>.AddRange фактически добавляет предоставленный диапазон? - PullRequest
0 голосов
/ 14 января 2019

Я какое-то время оглядывался по сторонам и, похоже, не могу найти никакой документации, которая бы касалась моей проблемы.

Мне интересно, стоит ли мне беспокоиться о порядке добавления диапазона к 1003 * в коллекцию. Я могу предположить весь день, что он будет добавлен в последовательном порядке, который я поставил; то есть, если я поставлю 0, 8, 5, 2, 9, его никогда не следует добавлять в порядке 9, 5, 2, 0, 8 или чего-либо, кроме 0, 8, 5, 2, 9.

Я запустил тест в консольном приложении, чтобы определить результаты, используя постинкремент в методе AddRange, например:

List<int> test = new List<int>();
for (int i = 0; i < 30;)
    test.AddRange(new int[] { i++, i++, i++ });

foreach (int i in test)
    Console.WriteLine(i);

Печатается в последовательном порядке, как я ожидал, от zero до 29. Однако меня беспокоит то, что я не могу найти документацию, которая показывает мне, как именно этот диапазон добавляется в коллекцию. Я бы предположил, что это будет что-то вроде:

foreach (int i in range)
    collection.Add(i);

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


Примечание:

Судя по всему, я сегодня не выпил достаточно кофе и пропустил его, просматривая документацию 1024 * на AddRange. В любом случае, спасибо всем, по крайней мере, это отличный вопрос для будущих читателей, который может быть любопытным.

1 Ответ

0 голосов
/ 14 января 2019

Порядок элементов в коллекции сохраняется в Список.

Это первая строка в разделе Примечания по адресу: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.addrange?view=netframework-4.7.2

...