Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 75
- Предыдущая
- 75/642
- Следующая
Изменить размер шрифта:
75
static void ExecutePatternMatchingSwitchWithWhen(){ Console.WriteLine("1 [C#], 2 [VB]"); Console.Write("Please pick your language preference: "); object langChoice = Console.ReadLine(); var choice = int.TryParse(langChoice.ToString(), out int c) ? c : langChoice; switch (choice) { case int i when i == 2: case string s when s.Equals("VB", StringComparison.OrdinalIgnoreCase): Console.WriteLine("VB: OOP, multithreading, and more!"); // VB: ООП, многопоточность и многое другое! break; case int i when i == 1: case string s when s.Equals("C#", StringComparison.OrdinalIgnoreCase): Console.WriteLine("Good choice, C# is a fine language."); // Хороший выбор. C# - замечательный язык. break; default: Console.WriteLine("Well...good luck with that!"); // Хорошо, удачи с этим! break; } Console.WriteLine();}Здесь к оператору
switchcasecasecasecaseswitch (choice){ case int i: //do something break; case int i when i == 0: //do something break; case int i when i == -1: // do something break;}В первоначальном выпуске C# 7 возникало небольшое затруднение при сопоставлении с образцом, когда в нем использовались обобщенные типы. В версии C# 7.1 проблема была устранена. Обобщенные типы рассматриваются в главе 10.
На заметку! Все продемонстрированные ранее улучшения сопоставления с образцом в C# 9.0 также можно применять в операторах
switchИспользование выражений switch (нововведение в версии 8.0)
В версии C# 8 появились выражения
switchFromRainbowClassic()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"; };}С помощью новых выражений
switchstatic string FromRainbow(string colorBand){ return colorBand switch { "Red" => "#FF0000", "Orange" => "#FF7F00", "Yellow" => "#FFFF00", "Green" => "#00FF00", "Blue" => "#0000FF", "Indigo" => "#4B0082", "Violet" => "#9400D3", _ => "#FFFFFF", };}
75
- Предыдущая
- 75/642
- Следующая
Перейти на страницу:
