Все языки программирования предлагают средства для повторения блоков кода до тех пор, пока не будет удовлетворено условие завершения. С каким бы языком вы не имели дело в прошлом, итерационные операторы C# не должны вызывать особого удивления или требовать лишь небольшого объяснения. В C# предоставляются четыре итерационные конструкции:
• цикл for
• цикл foreach/in
• цикл while
• цикл do/while
Давайте рассмотрим каждую конструкцию зацикливания по очереди, создав новый проект консольного приложения по имени IterationsAndDecisions
На заметку!
Материал данного раздела главы будет кратким и по существу, т.к. здесь предполагается наличие у вас опыта работы с аналогичными ключевыми словами (if, for, switch и т.д.) в другом языке программирования. Если нужна дополнительная информация, просмотрите темы "Iteration Statements (C# Reference)" ("Операторы итераций (справочник по С#)"), "Jump Statements (C# Reference)" ("Операторы перехода (справочник по С#)") и "Selection Statements (C# Reference)" ("Операторы выбора (справочник по С#)") в документации по C# (https://docs.microsoft.com/ru-ru/dotnet/csharp/).Использование цикла for
Когда требуется повторять блок кода фиксированное количество раз, хороший уровень гибкости предлагает оператор for
// Базовый цикл for.
static void ForLoopExample
{
// Обратите внимание, что переменная i видима только в контексте цикла for.
for(int i = 0; i < 4; i++)
{
Console.WriteLine("Number is: {0} ", i);
}
// Здесь переменная i больше видимой не будет.
}
Все трюки, которые вы научились делать в языках С, C++ и Java, по-прежнему могут использоваться при формировании операторов for
--), а также применять ключевые слова goto, continue и break.Использование цикла foreach
Ключевое слово foreach
for цикл foreach будет выполнять проход по контейнеру только линейным (п+1) образом (т.е. не получится проходить по контейнеру в обратном направлении, пропускать каждый третий элемент и т.п.).Однако если нужно просто выполнить проход по коллекции элемент за элементом, то цикл foreach
foreach — один для обхода массива строк и еще один для обхода массива целых чисел. Обратите внимание, что тип, указанный перед ключевым словом in, представляет тип данных контейнера.// Проход по элементам массива посредством foreach.
static void ForEachLoopExample
{
string[] carTypes = {"Ford", "BMW", "Yugo", "Honda" };
foreach (string c in carTypes)
{
Console.WriteLine(c);
}
int[] myInts = { 10, 20, 30, 40 };
foreach (int i in myInts)
{
Console.WriteLine(i);
}
}
За ключевым словом in
IEnumerable. Как вы увидите в главе 10, библиотеки базовых классов .NET Core поставляются с несколькими коллекциями, которые содержат реализации распространенных абстрактных типов данных. Любой из них (скажем, обобщенный тип List) может применяться внутри цикла foreach.Использование неявной типизации в конструкциях foreach
В итерационных конструкциях foreach
subset, с применением неявной типизации все-таки можно выполнять итерацию по результирующему набору. Поместите в начало файла следующий оператор using:using System.Linq;
static void LinqQueryOverInts
{
int[] numbers = { 10, 20, 30, 40, 1, 2, 3, 8 };
// Запрос LINQ!
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT