в 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
вычисляет два значения в единственном выражении. Такой прием позволяет сравнивать в операторе
Мы еще вернемся к этому примеру в главе 4, где будут представлены кортежи.
Резюме
Цель настоящей главы заключалась в демонстрации многочисленных ключевых аспектов языка программирования С#. Мы исследовали привычные конструкции, которые могут быть задействованы при построении любого приложения. После ознакомления с ролью объекта приложения вы узнали о том, что каждая исполняемая программа на C# должна иметь тип, определяющий метод
Main
, либо явно, либо с использованием операторов верхнего уровня. Данный метод служит точкой входа в программу.
Затем были подробно описаны встроенные типы данных C# и разъяснено, что применяемые для их представления ключевые слова (например,
int
) на самом деле являются сокращенными обозначениями полноценных типов из пространства имен
System
(
System.Int32
в данном случае). С учетом этого каждый тип данных C# имеет набор встроенных членов. Кроме того, обсуждалась роль расширения и сужения, а также ключевых слов
checked
и
unchecked
.
В завершение главы рассматривалась роль неявной типизации с использованием ключевого слова
var
. Как было отмечено, неявная типизация наиболее полезна при работе с моделью программирования LINQ. Наконец, мы бегло взглянули на различные конструкции С#, предназначенные для организации циклов и принятия решений.
Теперь, когда вы понимаете некоторые базовые механизмы, в главе 4 завершится исследование основных средств языка. После этого вы будете хорошо подготовлены к изучению объектно-ориентированных возможностей С#, которое начнется в главе 5.