Читаем Язык программирования C#9 и платформа .NET5 полностью

Все языки программирования предлагают средства для повторения блоков кода до тех пор, пока не будет удовлетворено условие завершения. С каким бы языком вы не имели дело в прошлом, итерационные операторы 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/).

<p id="AutBody_Root123">Использование цикла for</p>

Когда требуется повторять блок кода фиксированное количество раз, хороший уровень гибкости предлагает оператор 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.

<p id="AutBody_Root124">Использование цикла foreach</p>

Ключевое слово foreach языка C# позволяет проходить в цикле по всем элементам внутри контейнера без необходимости в проверке верхнего предела. Тем не менее, в отличие от цикла 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.

<p id="AutBody_Root125">Использование неявной типизации в конструкциях foreach</p>

В итерационных конструкциях foreach также допускается использование неявной типизации. Как и можно было ожидать, компилятор будет выводить корректный "вид типа". Вспомните пример метода LINQ, представленный ранее в главе. Даже не зная точного типа данных переменной subset, с применением неявной типизации все-таки можно выполнять итерацию по результирующему набору. Поместите в начало файла следующий оператор using:

using System.Linq;

static void LinqQueryOverInts

{

  int[] numbers = { 10, 20, 30, 40, 1, 2, 3, 8 };

  // Запрос LINQ!

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT