0Pricing
C# Academy · Урок

Итерация по коллекциям

Списки, массивы и словари.

«Итерация по коллекциям» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Цикл foreach
  2. Итерация по коллекциям
  3. break и continue
  4. Распространённые ошибки при итерации
← Назад к C# Academy