Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Страница 74
default:
// Стандартное действие
break;
}
}
Выполнение сопоставления с образцом в операторах switch (нововведение в версии 7.0, обновление в версии 9.0)
До выхода версии C# 7 сопоставляющие выражения в операторах
switch
switch
case
case
case
return
break
goto
На заметку! Если вы новичок в объектно-ориентированном программировании, тогда материал этого раздела может слегка сбивать с толку. Все прояснится в главе 6, когда мы вернемся к новым средствам сопоставления с образцом C# 7 в контексте базовых и производных классов. Пока вполне достаточно понимать, что появился мощный новый способ написания операторов
switch
Добавьте еще один метод по имени
ExecutePatternMatchingSwitch()
static void ExecutePatternMatchingSwitch()
{
Console.WriteLine("1 [Integer (5)], 2 [String (\"Hi\")], 3 [Decimal (2.5)]");
Console.Write("Please choose an option: ");
string userChoice = Console.ReadLine();
object choice;
// Стандартный оператор switch, в котором применяется
// сопоставление с образцом с константами
switch (userChoice)
{
case "1":
choice = 5;
break;
case "2":
choice = "Hi";
break;
case "3":
choice = 2.5;
break;
default:
choice = 5;
break;
}
// Новый оператор switch, в котором применяется
// сопоставление с образцом с типами
switch (choice)
{
case int i:
Console.WriteLine("Your choice is an integer.");
// Выбрано целое число
break;
case string s:
Console.WriteLine("Your choice is a string.");
// Выбрана строка
break;
case decimal d:
Console.WriteLine("Your choice is a decimal.");
// Выбрано десятичное число
break;
default:
Console.WriteLine("Your choice is something else");
// Выбрано что-то другое
break;
}
Console.WriteLine();
}
В первом операторе
switch
switch
object
int
string
decimal
case
case
default
// Новый оператор switch, в котором применяется
// сопоставление с образцом с типами
switch (choice)
{
case int i:
Console.WriteLine("Your choice is an integer {0}.",i);
break;
case string s:
Console.WriteLine("Your choice is a string. {0}", s);
break;
case decimal d:
Console.WriteLine("Your choice is a decimal. {0}", d);
break;
default:
Console.WriteLine("Your choice is something else");
break;
}
Кроме оценки типа сопоставляющего выражения к операторам
case
when