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

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

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

178 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 ... 96 97 98 99 100 101 102 103 104 ... 407
    Перейти на страницу:
    экземпляр класса исключения в вызывающем коде при соответствующих обстоятельствах;

    • блок кода на вызывающей стороне, который обращается к члену, предрасположенному к возникновению исключения;

    • блок кода на вызывающей стороне, который будет обрабатывать (или перехватывать) исключение, если оно возникнет.

    Язык программирования C# предлагает пять ключевых слов (try, catch, throw, finally и when), которые позволяют генерировать и обрабатывать исключения. Объект, представляющий текущую проблему, относится к классу, который расширяет класс System.Exception (или производный от него класс). С учетом сказанного давайте исследуем роль данного базового класса, касающегося исключений.

    Базовый класс System.Exception

    Все исключения в конечном итоге происходят от базового класса System.Exception, который в свою очередь является производным от System.Object. Ниже показана основная часть этого класса (обратите внимание, что некоторые его члены являются виртуальными и, следовательно, могут быть переопределены в производных классах):

    public class Exception : ISerializable

    {

      // Открытые конструкторы

      public Exception(string message, Exception innerException);

      public Exception(string message);

      public Exception();

      ...

      // Методы

      public virtual Exception GetBaseException();

      public virtual void GetObjectData(SerializationInfo info,

        StreamingContext context);

      // Свойства

      public virtual IDictionary Data { get; }

      public virtual string HelpLink { get; set; }

      public int HResult {get;set;}

      public Exception InnerException { get; }

      public virtual string Message { get; }

      public virtual string Source { get; set; }

      public virtual string StackTrace { get; }

      public MethodBase TargetSite { get; }

    }

    Как видите, многие свойства, определенные в классе System.Exception, по своей природе допускают только чтение. Причина в том, что стандартные значения для каждого из них обычно будут предоставляться производными типами. Например, стандартное сообщение типа IndexOutOfRangeException выглядит так: "Index was outside the bounds of the array" (Индекс вышел за границы массива).

    В табл. 7.1 описаны наиболее важные члены класса System.Exception.

    Простейший пример

    Чтобы продемонстрировать полезность структурированной обработки исключений, мы должны создать класс, который будет генерировать исключение в надлежащих (или, можно сказать, исключительных) обстоятельствах. Создадим новый проект консольного приложения C# по имени SimpleException и определим в нем два класса (Car (автомобиль) и Radio (радиоприемник)), связав их между собой отношением "имеет". В классе Radio определен единственный метод, который отвечает за включение и выключение радиоприемника:

    using System;

    namespace SimpleException

    {

      class Radio

      {

        public void TurnOn(bool on)

        {

          Console.WriteLine(on ? "Jamming..." : "Quiet time...");

        }

      }

    }

    В дополнение к использованию класса Radio через включение/делегацию класс Car (его код показан ниже) определен так, что если пользователь превышает предопределенную максимальную скорость (заданную с помощью константного члена MaxSpeed), тогда двигатель выходит из строя, приводя объект Car в нерабочее состояние (отражается закрытой переменной-членом типа bool по имени _carIsDead).

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

    using System;

    namespace SimpleException

    {

      class Car

      {

        // Константа для представления максимальной скорости.

        public const int MaxSpeed = 100;

        // Свойства автомобиля.

        public int CurrentSpeed {get; set;} = 0;

        public string PetName {get; set;} = "";

        // He вышел ли автомобиль из строя?

        private bool _carIsDead;

        // В автомобиле имеется радиоприемник.

        private readonly Radio _theMusicBox = new Radio();

        // Конструкторы.

        public Car() {}

        public Car(string name, int speed)

        {

          CurrentSpeed = speed;

          PetName = name;

        }

        public void CrankTunes(bool state)

        {

          // Делегировать запрос внутреннему объекту.

          _theMusicBox.TurnOn(state);

        }

        // Проверить, не перегрелся ли автомобиль.

        public void Accelerate(int delta)

        {

          if (_carIsDead)

          {

            Console.WriteLine("{0} is out of order...", PetName);

          }

          else

          {

            CurrentSpeed += delta;

            if (CurrentSpeed > MaxSpeed)

            {

              Console.WriteLine("{0} has overheated!", PetName);

              CurrentSpeed = 0;

              _carIsDead = true;

            }

            else

            {

              Console.WriteLine("=> CurrentSpeed = {0}",

                CurrentSpeed);

            }

          }

        }

      }

    }

    Обновите код в файле Program.cs, чтобы заставить объект Car превышать заранее заданную максимальную скорость (установленную в 100 внутри класса Car):

    using System;

    using System.Collections;

    using SimpleException;

    Console.WriteLine("***** Simple Exception Example *****");

    Console.WriteLine("=> Creating a car and stepping on it!");

    Car myCar = new Car("Zippy", 20);

    myCar.CrankTunes(true);

    for (int i = 0; i < 10; i++)

    {

      myCar.Accelerate(10);

    }

    Console.ReadLine();

    В результате запуска кода будет получен следующий вывод:

    ***** Simple Exception Example *****

    => Creating a car and stepping on it!

    Jamming...

    => CurrentSpeed = 30

    => CurrentSpeed = 40

    => CurrentSpeed = 50

    => CurrentSpeed = 60

    => CurrentSpeed = 70

    => CurrentSpeed = 80

    => CurrentSpeed = 90

    => CurrentSpeed = 100

    Zippy has overheated!

    Zippy is out of order...

    Генерация общего исключения

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

    Чтобы модернизировать метод Accelerate()

    1 ... 96 97 98 99 100 101 102 103 104 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

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


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

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

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


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

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки