Чтение онлайн

на главную - закладки

Жанры

Язык программирования 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

Еще

одной простой конструкцией 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;

Поделиться:
Популярные книги

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Кай из рода красных драконов

Бэд Кристиан
1. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов

Хозяйка Проклятой Пустоши. Книга 2

Белецкая Наталья
2. Хозяйка Проклятой Пустоши
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка Проклятой Пустоши. Книга 2

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Потусторонний. Книга 2

Погуляй Юрий Александрович
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Потусторонний. Книга 2

Чапаев и пустота

Пелевин Виктор Олегович
Проза:
современная проза
8.39
рейтинг книги
Чапаев и пустота

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

Лютая

Шёпот Светлана Богдановна
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Лютая

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5