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

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

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

На заметку! Все продемонстрированные ранее улучшения сопоставления с образцом в C# 9.0 также можно применять в операторах

switch
.

Использование выражений switch (нововведение в версии 8.0)

В версии C# 8 появились выражения

switch
, позволяющие присваивать значение переменной в лаконичном операторе. Рассмотрим версию C# 7 метода
FromRainbowClassic
, который принимает имя цвета и возвращает для него шестнадцатеричное значение:

static string FromRainbowClassic(string colorBand)

{

switch (colorBand)

{

case "Red":

return "#FF0000";

case "Orange":

return "#FF7F00";

case "Yellow":

return "#FFFF00";

case "Green":

return "#00FF00";

case "Blue":

return "#0000FF";

case "Indigo":

return "#4B0082";

case "Violet":

return "#9400D3";

default:

return "#FFFFFF";

};

}

С

помощью новых выражений
switch
в C# 8 код предыдущего метода можно переписать следующим образом, сделав его гораздо более лаконичным:

static string FromRainbow(string colorBand)

{

return colorBand switch

{

"Red" => "#FF0000",

"Orange" => "#FF7F00",

"Yellow" => "#FFFF00",

"Green" => "#00FF00",

"Blue" => "#0000FF",

"Indigo" => "#4B0082",

"Violet" => "#9400D3",

_ => "#FFFFFF",

};

}

В приведенном примере присутствует много непонятного, начиная с лямбда-операции (

=>
) и заканчивая отбрасыванием (
_
). Все это будет раскрыто позже в книге и данный пример окончательно прояснится.

Перед тем, как завершить обсуждение темы выражений

switch
, давайте рассмотрим еще один пример, в котором вовлечены кортежи. Кортежи подробно раскрываются в главе 4, а пока считайте кортеж простой конструкцией, которая содержит более одного значения и определяется посредством круглых скобок, подобно следующему кортежу, содержащему значения
string
и
int
:

(string, int)

В показанном ниже примере два значения, передаваемые методу

RockPapeScissors
,
преобразуются в кортеж, после чего выражение
switch
вычисляет два значения в единственном выражении. Такой прием позволяет сравнивать в операторе
switch
более одного выражения:

//Switch expression with Tuples

static string RockPaperScissors(string first, string second)

{

return (first, second) switch

{

("rock", "paper") => "Paper wins.",

("rock", "scissors") => "Rock wins.",

("paper", "rock") => "Paper wins.",

("paper", "scissors") => "Scissors wins.",

("scissors", "rock") => "Rock wins.",

("scissors", "paper") => "Scissors wins.",

(_, _) => "Tie.",

};

}

Чтобы вызвать метод

RockPaperScissors
, добавьте в метод
Main
следующие строки кода:

Console.WriteLine(RockPaperScissors("paper","rock"));

Console.WriteLine(RockPaperScissors("scissors","rock"));

Мы еще вернемся к этому примеру в главе 4, где будут представлены кортежи.

Резюме

Цель настоящей главы заключалась в демонстрации многочисленных ключевых аспектов языка программирования С#. Мы исследовали привычные конструкции, которые могут быть задействованы при построении любого приложения. После ознакомления с ролью объекта приложения вы узнали о том, что каждая исполняемая программа на C# должна иметь тип, определяющий метод

Main
, либо явно, либо с использованием операторов верхнего уровня. Данный метод служит точкой входа в программу.

Затем были подробно описаны встроенные типы данных C# и разъяснено, что применяемые для их представления ключевые слова (например,

int
) на самом деле являются сокращенными обозначениями полноценных типов из пространства имен
System
(
System.Int32
в данном случае). С учетом этого каждый тип данных C# имеет набор встроенных членов. Кроме того, обсуждалась роль расширения и сужения, а также ключевых слов
checked
и
unchecked
.

В завершение главы рассматривалась роль неявной типизации с использованием ключевого слова

var
. Как было отмечено, неявная типизация наиболее полезна при работе с моделью программирования LINQ. Наконец, мы бегло взглянули на различные конструкции С#, предназначенные для организации циклов и принятия решений.

Теперь, когда вы понимаете некоторые базовые механизмы, в главе 4 завершится исследование основных средств языка. После этого вы будете хорошо подготовлены к изучению объектно-ориентированных возможностей С#, которое начнется в главе 5.

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

Газлайтер. Том 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