Язык программирования C#9 и платформа .NET5
Шрифт:
Во-вторых, условная операция может использоваться только в операторах присваивания. Следующий код приведет к выдаче на этапе компиляции сообщения об ошибке "Only assignment, call, increment, decrement, and new object expressions can be used as a statement" (В качестве оператора могут применяться только выражения присваивания, вызова, инкремента, декремента и создания объекта):
stringData.Length > 0
? Console.WriteLine("string is greater than 0 characters")
: Console.WriteLine("string is not greater than 0 characters");
В версии C# 7.2
static void ConditionalRefExample
{
var smallArray = new int[] { 1, 2, 3, 4, 5 };
var largeArray = new int[] { 10, 20, 30, 40, 50 };
int index = 7;
ref int refValue = ref ((index < 5)
? ref smallArray[index]
: ref largeArray[index - 5]);
refValue = 0;
index = 2;
((index < 5)
? ref smallArray[index]
: ref largeArray[index - 5]) = 100;
Console.WriteLine(string.Join(" ", smallArray));
Console.WriteLine(string.Join(" ", largeArray));
}
Если вы не знакомы с ключевым словом
ref
, то переживать пока не стоит, т.к. оно будет подробно раскрыто в следующей главе. В первом примере возвращается ссылка на местоположение массива с условием, которая присваивается переменной refValue
. С концептуальной точки зрения считайте ссылку указателем на позицию в массиве, а не на фактическое значение, которое в ней находится. Это позволяет изменять значение в позиции массива напрямую, изменяя значение, которое присвоено переменной refValue
. Результатом установки значения переменной refValue
в 0
будет изменение значений второго массива: 10,20,0,40,50. Во втором примере значение во второй позиции первого массива изменяется на 100, давая в результате 1,2,100,4,5. Использование логических операций
Для выполнения более сложных проверок оператор
if
может также включать сложные выражения и содержать операторы else
. Синтаксис идентичен своим аналогам в языках С (C++) и Java. Для построения сложных выражений язык C# предлагает вполне ожидаемый набор логических операций, которые описан в табл. 3.10. На заметку! Операции
&&
и ||
при необходимости поддерживают сокращенный путь выполнения. Другими словами, после того, как было определено, что сложное выражение должно дать в результате false
, оставшиеся подвыражения вычисляться не будут. Если требуется, чтобы все выражения вычислялись безотносительно к чему-либо, тогда можно использовать операции &
и |
. Использование оператора switch
Еще
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;
Поделиться:
Популярные книги
Курсант: Назад в СССР 10
10. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Законы Рода. Том 3
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Любимая учительница
1. совершенная любовь
Любовные романы:
современные любовные романы
эро литература
8.73
рейтинг книги
Девятый
1. Девятый
Фантастика:
боевая фантастика
попаданцы
9.15
рейтинг книги
Вперед в прошлое 2
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Калибр Личности 1
1. Калибр Личности
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Совпадений нет
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Кодекс Крови. Книга Х
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Авиатор: назад в СССР 14
14. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Последний Паладин. Том 4
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому!
1. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Средневековая история. Тетралогия
Средневековая история
Фантастика:
фэнтези
попаданцы
9.16