Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Страница 68
Однако, как будет показано в начале главы 13, в наборе технологий LINQ применяются выражения запросов, которые могут выдавать динамически создаваемые результирующие наборы, основанные на формате самого запроса. В таких случаях неявная типизация исключительно удобна, потому что вам не придется явно определять тип, который запрос может возвращать, а в ряде ситуаций это вообще невозможно. Посмотрите, сможете ли вы определить лежащий в основе тип данных
subset
static void LinqQueryOverInts()
{
int[] numbers = { 10, 20, 30, 40, 1, 2, 3, 8 };
<b>// Запрос LINQ!</b>
var subset = from i in numbers where i < 10 select i;
Console.Write("Values in subset: ");
foreach (var i in subset)
{
Console.Write("{0} ", i);
}
Console.WriteLine();
// К какому же типу относится subset?
Console.WriteLine("subset is a: {0}", subset.GetType().Name);
Console.WriteLine("subset is defined in: {0}",
subset.GetType().Namespace);
}
Вы можете предположить, что типом данных
subset
ildasm.exe
Фактически можно было бы даже утверждать, что единственным случаем, когда применение ключевого слова
var
int
int
var
Работа с итерационными конструкциями C#
Все языки программирования предлагают средства для повторения блоков кода до тех пор, пока не будет удовлетворено условие завершения. С каким бы языком вы не имели дело в прошлом, итерационные операторы C# не должны вызывать особого удивления или требовать лишь небольшого объяснения. В C# предоставляются четыре итерационные конструкции:
• цикл
for
• цикл
foreach/in
• цикл
while
• цикл
do/while
Давайте рассмотрим каждую конструкцию зацикливания по очереди, создав новый проект консольного приложения по имени
IterationsAndDecisions
На заметку! Материал данного раздела главы будет кратким и по существу, т.к. здесь предполагается наличие у вас опыта работы с аналогичными ключевыми словами (
if
for
switch
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
Однако если нужно просто выполнить проход по коллекции элемент за элементом, то цикл
foreach
foreach
in
// Проход по элементам массива посредством foreach.
static void ForEachLoopExample()
{