foreach
string[] plants = { "leaf", "mint" }; хранит два слова. Затем foreach (string plant in plants) передаёт каждое слово имени plant, а Console.WriteLine(plant) пишет его. Экран показывает две строки: leaf, затем mint. На этой странице счётчик индекса не пишется. Оставьте публичный класс с именем Pine.
Одно имя для каждого значения в массиве
Откройте файл Pine. Имя класса остаётся Pine. Эта страница не переименовывает тип. Удалите любой for с break или continue, если такая форма ещё есть. Удалите счётный for (int i = 1; i <= 5; i = i + 1), если он ещё есть. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода, нет раннего break и нет счётчика индекса. Экран пишет только строка вывода внутри фигурных скобок foreach.
Внутри Main сначала сохраните массив: string[] plants = { "leaf", "mint" };. Эта строка экран не пишет. Она только держит два слова под именем plants. Затем цикл:
foreach (string plant in plants) {
Console.WriteLine(plant);
}
Слово foreach пишется строчными буквами, одним словом. Внутри скобок стоят тип элемента string, имя plant для одного элемента, слово in, затем имя массива plants. Это in — не путь и не метка case. Оно отмечает «каждое значение из plants попадает в plant.» Фигурные скобки держат тело. Console.WriteLine(plant); пишет текущее слово без кавычек вокруг plant. Сохраните файл.
Файл, который вы оставляете
Оставьте эту учебную форму. Один string[] с именем plants, где сначала leaf, затем mint. Один foreach с string plant in plants. Одна строка вывода, которая пишет голое имя plant. Нет индекса i, нет break и нет кавычек вокруг plant.
using System;
public class Pine
{
public static void Main()
{
string[] plants = { "leaf", "mint" };
foreach (string plant in plants)
{
Console.WriteLine(plant);
}
}
}
Читайте сверху. using System; готовит короткие имена. public class Pine именует тип. public static void Main() — место, где стартует среда выполнения. string[] plants = { "leaf", "mint" }; хранит два слова. foreach (string plant in plants) обходит их. Console.WriteLine(plant); пишет каждое слово. На экране две строки: leaf, затем mint.
Запустите через dotnet run. Программа пишет две строки и останавливается. Она не ждёт, пока вы введёте текст. Если dotnet run ждёт, в файле ещё есть ReadLine. Удалите эту строку и оставьте массив плюс foreach выше. Экран показывает leaf, затем mint. Если экран показывает только leaf, вы, возможно, ещё на странице массивов, которая один раз пишет plants[0]. Замените это на foreach. Если экран на каждой строке показывает буквы plant, в строке вывода стоят кавычки: Console.WriteLine("plant");. Если экран показывает foreach буквами, в строке вывода стоят кавычки вокруг этого слова. Вы не переустанавливаете .NET SDK из‑за экрана с неправильными строками.
Пройдите один полный запуск по порядку. plants держит leaf, затем mint. Первый проход ставит plant в leaf, и строка вывода пишет leaf. Второй проход ставит plant в mint и пишет mint. Затем значений больше нет, и цикл заканчивается. На этой странице вы не писали int i = 0 или i < plants.Length. Заголовок foreach просит C# посетить каждое сохранённое значение один раз. Имя plant объявляется один раз в заголовке как string plant.
Обход int-массива тем же способом
Смените сохранённый массив и тип элемента так, чтобы каждое значение было целым числом. Используйте int[] slots = { 2, 4, 6 }; и foreach (int n in slots) с Console.WriteLine(n); в теле. Теперь экран должен показать три строки: 2, затем 4, затем 6. Слово in по-прежнему стоит между именем элемента и именем массива. Тело по-прежнему пишет имя, которое держит один элемент.
using System;
public class Pine
{
public static void Main()
{
int[] slots = { 2, 4, 6 };
foreach (int n in slots)
{
Console.WriteLine(n);
}
}
}
Это второй файл. Это не файл, который вы оставляете. Запустите dotnet run. Экран показывает три строки. Вы заменили массив string на массив int и согласовали тип имени элемента с int. После того как увидели 2, 4 и 6, верните оставленный файл: plants с foreach (string plant in plants). Обе версии — корректный C#. Они учат одну и ту же форму foreach с разными видами элементов.
Ещё раз прочитайте запуск с int. slots держит 2, затем 4, затем 6. Первый проход ставит n в 2 и пишет его. Второй проход ставит n в 4 и пишет его. Третий проход ставит n в 6 и пишет его. Затем цикл заканчивается. Вокруг чисел в фигурных скобках массива нет кавычек. Console.WriteLine(n) без кавычек вокруг n пишет эти сохранённые числа на экран.
Правила, которые держат foreach ясным
В скобках должны стоять тип, имя, in и имя массива — в этом порядке. Запись foreach (string plant plants) без in заставляет сборку выдать ошибку. Тип элемента должен подходить массиву: string с массивом string, int с массивом int. Ставить string plant рядом с массивом int[] — не та форма, которую строит этот урок. Фигурные скобки по-прежнему держат тело, когда в теле одна или несколько строк.
foreach — это не счётный for с более ранней страницы и не break с предыдущей. Счётный for писал старт, проверку и шаг со счётчиком. foreach обходит значения, уже сохранённые в массиве. break рано заканчивает цикл; первое демо этой страницы пишет каждое значение. Не оставляйте демо break или простой while в том же Main и не удивляйтесь, почему экран показывает 1 и 2 вместо leaf и mint. В Main этой сессии должны быть только массив и foreach.
Частая путаница — писать сам синтаксис: Console.WriteLine("foreach");. Это пишет символы foreach. Это не обходит массив. Другая путаница — Console.WriteLine("plant"); с кавычками: на каждом проходе пишется словечко plant вместо leaf и mint. Держите Console.WriteLine(plant) без кавычек, когда на экране нужно значение элемента.
Если в массиве нет элементов — например string[] plants = { }; — тело никогда не выполняется, и экран остаётся пустым. Это всё ещё корректный foreach; демо этого урока держат хотя бы два значения, чтобы вы видели написанные строки. Когда позже понадобится номер индекса на экране, вернётся счётный for; foreach нужен, чтобы посещать значения без управления этим индексом вручную. Смена значения внутри цикла через plant = "stem"; на этой начальной форме не переписывает слот массива — считайте plant значением, которое вы читаете для вывода, а не инструментом правки plants.
Теперь вы можете сохранить массив, написать foreach (Type name in arrayName) и один раз вывести каждое значение. Согласование типа элемента с массивом позволяет циклу собираться. Следующая страница — methods: там строки группируют под именем, которое можно вызвать из Main.
Экран — это каждое значение массива
Файл, который вы оставляете, пишет leaf, затем mint. Имя plant стоит в строке вывода, а буквы plant не появляются на экране как подпись. Слово in стоит в скобках, и in не появляется на экране. Кавычки вокруг plant или вокруг foreach пишут буквы, а не обход массива.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху