Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
<< На главную

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 71 72 73 74 75 76 77 78 79 ... 642
Перейти на страницу:

static void ExecutePatternMatchingSwitchWithWhen()

{

  Console.WriteLine(&quot;1 [C#], 2 [VB]&quot;);

  Console.Write(&quot;Please pick your language preference: &quot;);

  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(&quot;VB&quot;, StringComparison.OrdinalIgnoreCase):

      Console.WriteLine(&quot;VB: OOP, multithreading, and more!&quot;);

                      // VB: ООП, многопоточность и многое другое!

      break;

    case int i when i == 1:

    case string s when s.Equals(&quot;C#&quot;, StringComparison.OrdinalIgnoreCase):

      Console.WriteLine(&quot;Good choice, C# is a fine language.&quot;);

                      // Хороший выбор. C# - замечательный язык.

      break;

    default:

      Console.WriteLine(&quot;Well...good luck with that!&quot;);

                      // Хорошо, удачи с этим!

      break;

  }

  Console.WriteLine();

}

Здесь к оператору switch добавляется новое измерение, поскольку порядок следования операторов case теперь важен. При использовании образца с константами каждый оператор case обязан быть уникальным. В случае применения образца с типами это больше не так. Например, следующий код будет давать совпадение для каждого целого числа в первом операторе case, а второй и третий оператор case никогда не выполнятся (на самом деле такой код даже не скомпилируется):

switch (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.

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

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

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

static string FromRainbowClassic(string colorBand)

{

  switch (colorBand)

  {

    case &quot;Red&quot;:

      return &quot;#FF0000&quot;;

    case &quot;Orange&quot;:

      return &quot;#FF7F00&quot;;

    case &quot;Yellow&quot;:

      return &quot;#FFFF00&quot;;

    case &quot;Green&quot;:

      return &quot;#00FF00&quot;;

    case &quot;Blue&quot;:

      return &quot;#0000FF&quot;;

    case &quot;Indigo&quot;:

      return &quot;#4B0082&quot;;

    case &quot;Violet&quot;:

      return &quot;#9400D3&quot;;

    default:

      return &quot;#FFFFFF&quot;;

  };

}

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

static string FromRainbow(string colorBand)

{

  return colorBand switch

  {

    &quot;Red&quot; =&gt; &quot;#FF0000&quot;,

    &quot;Orange&quot; =&gt; &quot;#FF7F00&quot;,

    &quot;Yellow&quot; =&gt; &quot;#FFFF00&quot;,

    &quot;Green&quot; =&gt; &quot;#00FF00&quot;,

    &quot;Blue&quot; =&gt; &quot;#0000FF&quot;,

    &quot;Indigo&quot; =&gt; &quot;#4B0082&quot;,

    &quot;Violet&quot; =&gt; &quot;#9400D3&quot;,

    _ =&gt; &quot;#FFFFFF&quot;,

  };

}

1 ... 71 72 73 74 75 76 77 78 79 ... 642
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга