.NET List<T> Concat против AddRange
-
01-07-2019 - |
Решение
У них совершенно разная семантика.
AddRange изменяет список, добавляя в него другие элементы.
Concat возвращает новую последовательность, содержащую список и другие элементы, без изменения списка.
Выберите тот, который имеет нужную вам семантику.
Другие советы
Большая разница заключается в том, что AddRange изменяет тот список, для которого он вызывается, тогда как Concat создает новый список.Следовательно, они имеют разное применение.
Также Concat — это метод расширения, который применяется к любому IEnumerable и возвращает IEnumerable, вам нужен .ToList(), чтобы получить новый список.
Если вы хотите расширить содержимое существующего списка, используйте AddRange.
Если вы создаете новый список из двух источников IEnumerable, используйте Concat с .ToList.Его качество заключается в том, что он не мутирует ни один из источников.
Если вам когда-либо понадобится перечислить содержимое только двух списков (или любого другого IEnumerable), просто используйте Concat каждый раз, это имеет то преимущество, что фактически не выделяется новая память для хранения единого списка.
Я нашел интересную статью о разнице между этими двумя структурами и сравнении их производительности...
Основная идея заключается в том, что AddRange работает намного быстрее, когда речь идет о коллекциях большого размера.
Здесь Связь
Надеюсь это поможет,