Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про C#: array, list, data, structure

В чём отличие array от List в C#?

Этот вопрос проверяет знание фундаментальных структур данных в C# и понимание компромиссов между производительностью и гибкостью.

Короткий ответ

Array — это структура фиксированного размера, создаваемая один раз. List — это обертка над массивом, которая предоставляет динамическое изменение размера. Когда вы добавляете элементы в List и он заполняется, он автоматически создает новый массив большего размера и копирует в него старые элементы. List удобнее для добавления/удаления, а Array немного эффективнее по памяти и скорости доступа, если размер известен заранее.

Длинный ответ

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

Ключевые отличия:

  • Размер:

    • Array: Фиксированный размер задается при создании и не может быть изменен.

      int[] fixedArray = new int[10]; // Всегда 10 элементов
    • List: Динамический размер. Автоматически расширяется при добавлении элементов.

      List<int> dynamicList = new List<int>(); // Пустой список
      dynamicList.Add(1); // Теперь в нем 1 элемент
  • Производительность:

    • Доступ по индексу: O(1) и у Array, и у List (так как List внутри использует массив).

    • Добавление элементов:

      • Array не поддерживает добавление (размер фиксирован).

      • List добавляет в конец в среднем за O(1), но при превышении Capacity происходит дорогая операция выделения нового массива и копирования.

  • Память:

    • Array: Тратит ровно столько памяти, сколько нужно для N элементов.

    • List: Имеет свойство Capacity (емкость) — размер внутреннего массива. Обычно Capacity больше, чем Count (фактическое количество элементов), что приводит к небольшим издержкам памяти для обеспечения быстрого добавления.

  • Функциональность:

    • Array: Базовый функционал.

    • List: Богатый API с методами Add, Remove, Find, Sort и многими другими.

Вывод:
Используйте Array для данных, размер которых заведомо известен и не будет меняться (например, сетка плиток уровня). Во всех остальных случаях, когда требуется гибкость, используйте List.

  • Аватар

    Unity Guru

    Oleg Miroshkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • C#

    C#

Ключевые слова

#array

#list

#data

#structure

Подпишись на Game Developer в телеграм

  • Аватар

    Unity Guru

    Oleg Miroshkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.