Список List<T> в C#
List<T> в C#: динамический список, добавление и удаление элементов, поиск, сортировка и перебор — с примерами.
List<T> — динамический список из пространства имён
System.Collections.Generic. В отличие от массива, он автоматически меняет размер: можно добавлять и удалять элементы во время работы программы.
Создание списка
using System.Collections.Generic;
var names = new List<string>(); // пустой список строк
names.Add("Аня");
names.Add("Боря");
names.Add("Вика");
Console.WriteLine(names.Count); // 3
Console.WriteLine(names[1]); // Боря
Вывод:
3 Боря
Можно сразу инициализировать значениями:
var primes = new List<int> { 2, 3, 5, 7, 11 };
Console.WriteLine(string.Join(", ", primes));
Вывод:
2, 3, 5, 7, 11
Основные методы
Метод / свойство | Действие |
| добавить в конец |
| вставить на позицию i |
| удалить первое вхождение x |
| удалить элемент по индексу |
| содержит ли элемент |
| индекс первого вхождения (-1 если нет) |
| сортировать по умолчанию |
| количество элементов |
var nums = new List<int> { 30, 10, 20 };
nums.Add(40);
nums.Remove(10); // удалить значение 10
nums.Insert(0, 5); // вставить 5 в начало
nums.Sort();
Console.WriteLine(string.Join(", ", nums));
Console.WriteLine(nums.Contains(20)); // True
Вывод:
5, 20, 30, 40 True
Перебор списка
var cities = new List<string> { "Москва", "Казань", "Новосибирск" };
foreach (string city in cities)
Console.WriteLine(city);
Вывод:
Москва Казань Новосибирск
Частая ловушка: изменение списка в foreach
Нельзя добавлять или удалять элементы, пока идёт foreach — возникнет исключение. Вместо этого используйте цикл for с обратным отсчётом:
var items = new List<int> { 1, 2, 3, 4, 5 };
// Удаляем чётные — идём с конца, чтобы индексы не съезжали
for (int i = items.Count - 1; i >= 0; i--)
if (items[i] % 2 == 0)
items.RemoveAt(i);
Console.WriteLine(string.Join(", ", items));
Вывод:
1, 3, 5
Коротко
List<T>— динамический список; тип элементов указывается в угловых скобках.- Размер меняется автоматически;
Count— текущее число элементов. - Ключевые методы:
Add,Insert,Remove,RemoveAt,Contains,Sort. - Не изменяйте список во время
foreach— используйте обратныйfor.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.