Чем List в C# удобнее массива (T[])?

«Чем List в C# удобнее массива (T[])?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

List<T> предоставляет абстракцию над динамическим массивом, что дает несколько ключевых преимуществ перед обычным массивом T[]:

  • Динамический размер: Не требует указания размера при создании и автоматически расширяется при добавлении элементов.
  • Богатый API для модификации: Встроенные методы для добавления, удаления, поиска и манипуляций.
  • Удобная интеграция с LINQ: Многие LINQ-операторы возвращают IEnumerable<T>, который легко преобразовать в список.

Практические примеры:

// 1. Создание и добавление элементов
var list = new List<int>(); // Размер не указан
list.Add(1);
list.AddRange(new[] { 2, 3, 4 });

// 2. Удаление и вставка
list.Remove(3); // Удаляет первое вхождение числа 3
list.Insert(1, 99); // Вставляет 99 по индексу 1

// 3. Поиск и фильтрация с LINQ
var firstEven = list.FirstOrDefault(x => x % 2 == 0);
var evenNumbers = list.Where(x => x % 2 == 0).ToList();

// 4. Полезные методы
list.Sort();
list.Reverse();
bool contains = list.Contains(99);

Когда использовать массив:

  • Размер коллекции фиксирован и известен на этапе компиляции.
  • Критически важна производительность в low-level операциях (например, обработка больших бинарных данных).
  • Работа с API, требующими массивов (некоторые низкоуровневые или межплатформенные вызовы).