Console.WriteLine(string.Join(" ", smallArray));
Console.WriteLine(string.Join(" ", largeArray));
}
Если вы не знакомы с ключевым словом ref
, то переживать пока не стоит, т.к. оно будет подробно раскрыто в следующей главе. В первом примере возвращается ссылка на местоположение массива с условием, которая присваивается переменной refValue
. С концептуальной точки зрения считайте ссылку указателем на позицию в массиве, а не на фактическое значение, которое в ней находится. Это позволяет изменять значение в позиции массива напрямую, изменяя значение, которое присвоено переменной refValue
. Результатом установки значения переменной refValue
в 0
будет изменение значений второго массива: 10,20,
Использование логических операций
Для выполнения более сложных проверок оператор if
может также включать сложные выражения и содержать операторы else
. Синтаксис идентичен своим аналогам в языках С (C++) и Java. Для построения сложных выражений язык C# предлагает вполне ожидаемый набор логических операций, которые описан в табл. 3.10.
На заметку! Операции &&
и ||
при необходимости поддерживают сокращенный путь выполнения. Другими словами, после того, как было определено, что сложное выражение должно дать в результате false
, оставшиеся подвыражения вычисляться не будут. Если требуется, чтобы все выражения вычислялись безотносительно к чему-либо, тогда можно использовать операции &
и |
.
Использование оператора switch
Еще одной простой конструкцией C# для реализации выбора является оператор switch
. Как и в остальных основанных на С языках, оператор switch
позволяет организовать выполнение программы на основе заранее определенного набора вариантов. Например, в следующем коде для каждого из двух возможных вариантов выводится специфичное сообщение (блок default
обрабатывает недопустимый выбор):
// Switch on a numerical value.
static void SwitchExample
{
Console.WriteLine("1 [C#], 2 [VB]");
Console.Write("Please pick your language preference: ");
// Выберите предпочитаемый язык:
string langChoice = Console.ReadLine;
int n = int.Parse(langChoice);
switch (n)
{
case 1:
Console.WriteLine("Good choice, C# is a fine language.");
// Хороший выбор. C# - замечательный язык.
break;
case 2:
Console.WriteLine("VB: OOP, multithreading, and more!");
// VB: ООП, многопоточность и многое другое!
break;
default:
Console.WriteLine("Well...good luck with that!");
// Что ж... удачи с этим!
break;
}
}
На заметку! Язык C# требует, чтобы каждый блок case
(включая default
), который содержит исполняемые операторы, завершался оператором return
, break
или goto
во избежание сквозного прохода по блокам.
Одна из замечательных особенностей оператора switch
в C# связана с тем, что вдобавок к числовым значениям он позволяет оценивать данные string
. На самом деле все версии C# способны оценивать типы данных char
, string
, bool
, int
, long
и enum
. В следующем разделе вы увидите, что в версии C# 7 появились дополнительные возможности. Вот модифицированная версия оператора switch
, которая оценивает переменную типа string
:
static void SwitchOnStringExample
{
Console.WriteLine("C# or VB");
Console.Write("Please pick your language preference: ");
string langChoice = Console.ReadLine;
switch (langChoice.ToUpper)
{
case "C#":
Console.WriteLine("Good choice, C# is a fine language.");
break;
case "VB":
Console.WriteLine("VB: OOP, multithreading and more!");
break;
default:
Console.WriteLine("Well...good luck with that!");
break;
}
}
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT