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 ... 51 52 53 54 55 56 57 58 59 ... 407
    Перейти на страницу:
    class="p1">// Вывод среднего значения для переданных данных

    Console.WriteLine("Average of data is: {0}", CalculateAverage());

    Console.ReadLine();

    Если модификатор params в определении метода CalculateAverage() не задействован, тогда его первый вызов приведет к ошибке на этапе компиляции, т.к. компилятору не удастся найти версию CalculateAverage(), принимающую пять аргументов типа double.

    На заметку! Во избежание любой неоднозначности язык C# требует, чтобы метод поддерживал только один параметр params, который должен быть последним в списке параметров.

    Как и можно было догадаться, данный прием — всего лишь удобство для вызывающего кода, потому что .NET Core Runtime создает массив по мере необходимости. В момент, когда массив окажется внутри области видимости вызываемого метода, его можно трактовать как полноценный массив .NET Core, обладающий всей функциональностью базового библиотечного класса System.Array. Взгляните на вывод:

    You sent me 5 doubles.

    Average of data is: 32.864

    You sent me 3 doubles.

    Average of data is: 4.3

    You sent me 0 doubles.

    Average of data is: 0

    Определение необязательных параметров

    Язык C# дает возможность создавать методы, которые могут принимать необязательные аргументы. Такой прием позволяет вызывать метод, опуская ненужные аргументы, при условии, что подходят указанные для них стандартные значения.

    Для иллюстрации работы с необязательными аргументами предположим, что имеется метод по имени EnterLogData() с одним необязательным параметром:

    static void EnterLogData(string message, string owner = "Programmer")

    {

      Console.Beep();

      Console.WriteLine("Error: {0}", message);  // Сведения об ошибке

      Console.WriteLine("Owner of Error: {0}", owner);  // Владелец ошибки

    }

    Здесь последнему аргументу string было присвоено стандартное значение "Programmer" через операцию присваивания внутри определения параметров. В результате метод EnterLogData() можно вызывать двумя способами:

    Console.WriteLine("***** Fun with Methods *****");

    ...

    EnterLogData("Oh no! Grid can't find data");

    EnterLogData("Oh no! I can't find the payroll data", "CFO");

    Console.ReadLine();

    Из-за того, что в первом вызове EnterLogData() не был указан второй аргумент string, будет использоваться его стандартное значение — "Programmer". Во втором вызове EnterLogData() для второго аргумента передано значение "CFO".

    Важно понимать, что значение, присваиваемое необязательному параметру, должно быть известно на этапе компиляции и не может вычисляться во время выполнения (если вы попытаетесь сделать это, то компилятор сообщит об ошибке). В целях иллюстрации модифицируйте метод EnterLogData(), добавив к нему дополнительный необязательный параметр:

    // Ошибка! Стандартное значение для необязательного

    // аргумента должно быть известно на этапе компиляции!

    static void EnterLogData(string message,

        string owner = "Programmer", DateTime timeStamp = DateTime.Now)

    {

      Console.Beep();

      Console.WriteLine("Error: {0}", message);  // Сведения об ошибке

      Console.WriteLine("Owner of Error: {0}", owner); // Владелец ошибки

      Console.WriteLine("Time of Error: {0}", timeStamp);

                                                 // Время возникновения ошибки

    }

    Такой код не скомпилируется, поскольку значение свойства Now класса DateTime вычисляется во время выполнения, а не на этапе компиляции.

    На заметку! Во избежание неоднозначности необязательные параметры должны всегда помещаться в конец сигнатуры метода. Если необязательные параметры обнаруживаются перед обязательными, тогда компилятор сообщит об ошибке.

    Использование именованных параметров (обновление в версии 7.2)

    Еще одним полезным языковым средством C# является поддержка именованных аргументов. Именованные аргументы позволяют вызывать метод с указанием значений параметров в любом желаемом порядке. Таким образом, вместо передачи параметров исключительно по позициям (как делается в большинстве случаев) можно указывать имя каждого аргумента, двоеточие и конкретное значение. Чтобы продемонстрировать использование именованных аргументов, добавьте в класс Program следующий метод:

    static void DisplayFancyMessage(ConsoleColor textColor,

      ConsoleColor backgroundColor, string message)

    {

      //Сохранить старые цвета для их восстановления после вывода сообщения.

      ConsoleColor oldTextColor = Console.ForegroundColor;

      ConsoleColor oldbackgroundColor = Console.BackgroundColor;

      // Установить новые цвета и вывести сообщение.

      Console.ForegroundColor = textColor;

      Console.BackgroundColor = backgroundColor;

      Console.WriteLine(message);

      // Восстановить предыдущие цвета.

      Console.ForegroundColor = oldTextColor;

      Console.BackgroundColor = oldbackgroundColor;

    }

    Теперь, когда метод DisplayFancyMessage() написан, можно было бы ожидать, что при его вызове будут передаваться две переменные типа ConsoleColor, за которыми следует переменная типа string. Однако с помощью именованных аргументов метод DisplayFancyMessage() допустимо вызывать и так, как показано ниже:

    Console.WriteLine("***** Fun with Methods *****");

    DisplayFancyMessage(message: "Wow! Very Fancy indeed!",

      textColor: ConsoleColor.DarkRed,

      backgroundColor: ConsoleColor.White);

    DisplayFancyMessage(backgroundColor: ConsoleColor.Green,

      message: "Testing...",

      textColor: ConsoleColor.DarkBlue);

    Console.ReadLine();

    В версии C# 7.2 правила применения именованных аргументов слегка изменились. До выхода C# 7.2 при вызове метода позиционные параметры должны были располагаться перед любыми именованными параметрами. В C# 7.2 и последующих версиях именованные и неименованные параметры можно смешивать, если параметры находятся в корректных позициях.

    На заметку! Хотя в C# 7.2 и последующих версиях именованные и позиционные аргументы можно смешивать, поступать так — не особо удачная идея. Возможность не значит обязательность!

    Ниже приведен пример:

    // Все нормально, т.к. позиционные аргументы находятся перед именованными.

    DisplayFancyMessage(ConsoleColor.Blue,

                        message: "Testing...",

                        backgroundColor: ConsoleColor.White);

    // Все нормально, т.к. все аргументы располагаются в корректном порядке.

    DisplayFancyMessage(textColor: ConsoleColor.White,

                        backgroundColor:ConsoleColor.Blue,

                        "Testing...");

    // ОШИБКА в вызове, поскольку позиционные аргументы следуют после именованных.

    DisplayFancyMessage(message: "Testing...",

                        backgroundColor: ConsoleColor.White,

                        ConsoleColor.Blue);

    Даже если оставить в стороне указанное ограничение, то все равно может возникать вопрос: при каких условиях вообще требуется такая языковая конструкция? В конце концов, для чего нужно менять позиции аргументов метода?

    Как выясняется, при наличии метода, в котором определены необязательные аргументы, данное средство может оказаться по-настоящему полезным. Предположим, что метод DisplayFancyMessage() переписан с целью поддержки необязательных аргументов, для которых указаны подходящие стандартные значения:

    static void DisplayFancyMessage(ConsoleColor textColor = ConsoleColor.Blue,

      ConsoleColor backgroundColor = ConsoleColor.White,

      string message = "Test Message")

    {

       ...

    }

    Учитывая, что каждый аргумент имеет стандартное значение, именованные аргументы позволяют указывать в вызывающем коде только те параметры, которые не должны принимать стандартные значения. Следовательно, если нужно, чтобы значение

    1 ... 51 52 53 54 55 56 57 58 59 ... 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 - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки