← Все вопросы
В чём разница между массивом и List в C#? Когда что использовать?
8
Только начал C#. Вижу два способа хранить набор чисел — массив int[] и List<int>. Чем они отличаются и что выбирать новичку? Массив объявляю так:
int[] numbers = new int[3];
numbers[0] = 10;
А в List, говорят, размер можно менять. Поясните, пожалуйста.
2 ответа
15
✓ Принятый ответ — помог автору
Главное отличие: массив имеет фиксированный размер, а List<T> — динамический, в него можно добавлять и удалять элементы.
Массив (array):
int[] numbers = new int[3]; // ровно 3 элемента, больше не влезет
numbers[0] = 10;
int[] primes = { 2, 3, 5, 7 }; // короткая инициализация
Console.WriteLine(primes.Length); // 4
List<T> — растёт по мере надобности:
using System.Collections.Generic;
var list = new List<int>();
list.Add(10); // добавить в конец
list.Add(20);
list.Insert(0, 5); // вставить по индексу
list.Remove(20); // удалить по значению
list.RemoveAt(0); // удалить по индексу
Console.WriteLine(list.Count); // у List это Count, а не Length
Как выбирать:
- Массив — когда количество элементов известно заранее и не меняется (например, дни недели). Чуть быстрее и экономнее по памяти.
List<T>— в 90% случаев новичку нужен именно он, потому что почти всегда заранее не знаешь, сколько будет элементов.
Совет: начинайте с List<T>, переходите на массив только если уверены, что размер фиксирован и важна производительность.
4
Маленькая, но важная деталь, на которой все спотыкаются: у массива длина — это свойство Length, а у List — Count. Перепутаете — не скомпилируется.
int[] arr = { 1, 2, 3 };
var list = new List<int> { 1, 2, 3 };
Console.WriteLine(arr.Length); // массив
Console.WriteLine(list.Count); // список
И ещё: из списка легко получить массив и обратно:
int[] back = list.ToArray();
var fromArr = new List<int>(arr);
Ваш ответ
Войдите, чтобы ответить на вопрос.