Итерация по коллекциям
Списки, массивы и словари.
«Итерация по коллекциям» — бесплатный урок C# Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Коллекции, которые можно перебирать
Многие типы C# можно перебирать с помощью foreach: массивы, List<T>, словари и другие коллекции.
Все они поддерживают перебор, потому что реализуют общий интерфейс. Вам не нужно знать подробности, чтобы использовать их.
Перебор массива
Массивы имеют фиксированный размер, заданный при создании.
Массив с элементами любого типа можно перебирать одним и тем же способом.
double[] prices = { 9.99, 4.50, 19.00 };
foreach (var p in prices)
{
Console.WriteLine(p);
}Перебор списка
List<T> может увеличиваться и уменьшаться. Это одна из самых распространённых коллекций.
Его перебор выглядит точно так же, как перебор массива.
var fruits = new List<string> { "apple", "pear" };
foreach (var f in fruits)
{
Console.WriteLine(f);
}Подсчёт во время перебора
Иногда внутри foreach нужен ручной счётчик.
Объявите переменную до цикла и увеличивайте её на каждой итерации.
var items = new List<string> { "a", "b", "c" };
int i = 0;
foreach (var item in items)
{
Console.WriteLine(i + ": " + item);
i++;
}Перебор словаря
Dictionary<K,V> хранит пары ключ–значение.
При переборе вы получаете KeyValuePair с .Key и .Value.
var ages = new Dictionary<string, int>
{
["Ada"] = 36,
["Linus"] = 54
};
foreach (var pair in ages)
{
Console.WriteLine(pair.Key + "=" + pair.Value);
}Ключи и значения словаря
Если нужны только ключи или только значения, используйте свойства .Keys или .Values.
Каждое из них само является коллекцией, которую можно перебирать.
foreach (var name in ages.Keys)
{
Console.WriteLine(name);
}Перебор HashSet
HashSet<T> хранит уникальные значения. Дубликаты игнорируются.
Его можно перебирать с помощью foreach, но порядок элементов не гарантируется.
var tags = new HashSet<string> { "c#", "dotnet", "c#" };
foreach (var t in tags)
{
Console.WriteLine(t);
}Вложенный перебор
Можно поместить один foreach внутрь другого, чтобы перебирать коллекцию коллекций.
Такой цикл перебирает каждую row, а затем каждое значение в этой row.
int[][] grid = { new[] {1, 2}, new[] {3, 4} };
foreach (var row in grid)
{
foreach (var v in row)
{
Console.WriteLine(v);
}
}Создание результата
Распространённый шаблон — перебрать одну коллекцию и добавить преобразованные элементы в другую.
Здесь мы удваиваем каждое число и сохраняем результат в новом списке.
var nums = new List<int> { 1, 2, 3 };
var doubled = new List<int>();
foreach (var n in nums)
{
doubled.Add(n * 2);
}
Console.WriteLine(string.Join(",", doubled));Пустые коллекции
Если коллекция не содержит элементов, тело foreach просто ни разу не выполняется.
Ошибки не возникает. Поэтому foreach безопасен даже в том случае, если список может быть пустым.
var empty = new List<int>();
foreach (var x in empty)
{
Console.WriteLine("never printed");
}
Console.WriteLine("done");IEnumerable: общая основа
Каждая перебираемая коллекция реализует IEnumerable<T>.
Именно на этот контракт опирается foreach. Благодаря ему один и тот же синтаксис цикла работает с массивами, списками, множествами и словарями.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли перебор коллекций.
Итоги
Вы увидели, как foreach работает с массивами, списками, словарями и множествами.
Все они поддерживают контракт IEnumerable<T>, поэтому один стиль цикла подходит для всех этих коллекций. Пустые коллекции безопасны, а словари возвращают пары «ключ — значение».
Часто задаваемые вопросы
Урок «Итерация по коллекциям» бесплатный?
Да — полный текст урока «Итерация по коллекциям» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Итерация по коллекциям»?
Списки, массивы и словари. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Итерация по коллекциям»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Цикл foreach
- Итерация по коллекциям
- break и continue
- Распространённые ошибки при итерации