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

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

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

177 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

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

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 43 44 45 46 47 48 49 50 51 ... 407
    Перейти на страницу:
    не разрешен, но что, если множество операторов case должны вырабатывать тот же самый результат? К счастью, их можно комбинировать, как демонстрируется ниже:

    case DayOfWeek.Saturday:

    case DayOfWeek.Sunday:

      Console.WriteLine("It’s the weekend!");

      break;

    Помещение любого кода между операторами case приведет к тому, что компилятор сообщит об ошибке. До тех пор, пока операторы case следуют друг за другом, как показано выше, их можно комбинировать для разделения общего кода.

    В дополнение к операторам return и break, показанным в предшествующих примерах кода, оператор switch также поддерживает применение goto для выхода из условия case и выполнения другого оператора case. Несмотря на наличие поддержки, данный прием почти повсеместно считается антипаттерном и в общем случае не рекомендуется. Ниже приведен пример использования оператора goto в блоке switch:

    static void SwitchWithGoto()

    {

      var foo = 5;

      switch (foo)

      {

        case 1:

          // Делать что-то

          goto case 2;

        case 2:

          // Делать что-то другое

          break;

      case 3:

          // Еще одно действие

          goto default;

        default:

          // Стандартное действие

          break;

      }

    Выполнение сопоставления с образцом в операторах switch (нововведение в версии 7.0, обновление в версии 9.0)

    До выхода версии C# 7 сопоставляющие выражения в операторах switch ограничивались сравнением переменной с константными значениями, что иногда называют образцом с константами. В C# 7 операторы 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 для оценки условий на переменной. В представленном ниже примере в дополнение к проверке типа производится проверка на совпадение преобразованного типа:

    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();

    }

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

    1 ... 43 44 45 46 47 48 49 50 51 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Лариса Лариса04 июнь 12:43 Да, просто до слез похоже на сериал ,,Даррел,,... Смерть в райском уголке - Эмили Салливан
    2. Stmara Stmara02 июнь 22:44 Приятная история, чтобы скоротать вечер. Любимая книга из последних "Любовь со смертью", также очень понравилась -"Суженная... Сердце космического дракона - Ольга Вадимовна Гусейнова
    3. Alex Alex01 июнь 17:12 💩💩💩🖕🖕🖕🖕🖕🖕🖕... Игровой момент II - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки