Список.NET <T> Concat по сравнению с AddRange

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

84
задан LosManos 7 December 2016 в 10:33
поделиться

2 ответа

У них есть полностью различная семантика.

AddRange изменяет список путем добавления других объектов к нему.

Concat возвращает новую последовательность, содержащую список и другие объекты, не изменяя список.

Выбирают, какой бы ни у каждого есть семантика, которую Вы хотите.

112
ответ дан Greg Beech 24 November 2019 в 08:35
поделиться

Большая разница - то, что AddRange видоизменяет тот список, против которого это называют, тогда как Concat создает новый Список. Следовательно у них есть различное использование.

Также Concat является дополнительным методом, который относится к любому IEnumerable и возвращает IEnumerable, Вам нужен.ToList () для приведения к новому Списку.

, Если Вы хотите расширить содержание существующего списка, используют AddRange.

, Если Вы создаете новый список из двух источников IEnumerable тогда, используют Concat с.ToList. Это имеет качество, что оно не видоизменяет ни один из источников.

, Если только когда-либо необходимо перечислять содержание двух Списков (или какой-либо другой IEnumerable) тогда просто, используют Concat каждый раз, когда это имеет преимущество фактического выделения новой памяти для содержания объединенного списка.

32
ответ дан AnthonyWJones 24 November 2019 в 08:35
поделиться
Другие вопросы по тегам:

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