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 ... 129 130 131 132 133 134 135 136 137 ... 407
    Перейти на страницу:
    Обобщения безопасны в отношении типов, потому что могут содержать только объекты указанного типа.

    • Обобщения значительно сокращают потребность в специальных типах коллекций, поскольку при создании обобщенного контейнера указывается "вид типа".

    Роль параметров обобщенных типов

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

    На заметку! Обобщенным образом могут быть записаны только классы, структуры, интерфейсы и делегаты, но не перечисления.

    Глядя на обобщенный элемент в документации по .NET Core или в браузере объектов Visual Studio, вы заметите пару угловых скобок с буквой или другой лексемой внутри. На рис. 10.1 показано окно браузера объектов Visual Studio, в котором отображается набор обобщенных элементов из пространства имен System.Collections.Generic, включающий выделенный класс List<T>.

    Формально эти лексемы называются параметрами типа, но в более дружественных к пользователю терминах на них можно ссылаться просто как на заполнители. Конструкцию <Т> можно читать как "типа Т". Таким образом, IEnumerable<T> можно прочитать как "IEnumerable типа Т".

    На заметку! Имя параметра типа (заполнитель) роли не играет и зависит от предпочтений разработчика, создавшего обобщенный элемент. Однако обычно имя T применяется для представления типов, ТКеу или К — для представления ключей и TValue или V — для представления значений.

    Когда вы создаете обобщенный объект, реализуете обобщенный интерфейс или вызываете обобщенный член, на вас возлагается обязанность по предоставлению значения для параметра типа. Многочисленные примеры вы увидите как в этой главе, так и в остальных материалах книги. Тем не менее, для начала рассмотрим основы взаимодействия с обобщенными типами и членами.

    Указание параметров типа для обобщенных классов и структур

    При создании экземпляра обобщенного класса или структуры вы указываете параметр типа, когда объявляете переменную и когда вызываете конструктор. Как было показано в предыдущем фрагменте кода, в методе UseGenericList() определены два объекта List<T>:

    // Этот объект List<> может хранить только объекты Person.

    List<Person> morePeople = new List<Person>();

    // Этот объект List<> может хранить только целые числа.

    List<int> moreInts = new List<int>();

    Первую строку приведенного выше кода можно трактовать как "список List<> объектов Т, где Т — тип Person" или более просто как "список объектов действующих лиц". После указания параметра типа обобщенного элемента изменить его нельзя (помните, что сущностью обобщений является безопасность в отношении типов). Когда параметр типа задается для обобщенного класса или структуры, все вхождения заполнителя (заполнителей) заменяются предоставленным значением.

    Если вы просмотрите полное объявление обобщенного класса List<T> в браузере объектов Visual Studio, то заметите, что заполнитель Т используется в определении повсеместно. Ниже приведен частичный листинг:

    // Частичное определение класса List<T>.

    namespace System.Collections.Generic

    {

      public class List<T> : IList<T>, IList, IReadOnlyList<T>

      {

        ...

        public void Add(T item);

        public void AddRange(IEnumerable<T> collection);

        public ReadOnlyCollection<T> AsReadOnly();

        public int BinarySearch(T item);

        public bool Contains(T item);

        public void CopyTo(T[] array);

        public int FindIndex(System.Predicate<T> match);

        public T FindLast(System.Predicate<T> match);

        public bool Remove(T item);

        public int RemoveAll(System.Predicate<T> match);

        public T[] ToArray();

        public bool TrueForAll(System.Predicate<T> match);

        public T this[int index] { get; set; }

      }

    }

    В случае создания List<T> с указанием объектов Person результат будет таким же, как если бы тип List<T> был определен следующим образом:

    namespace System.Collections.Generic

    {

      public class List<Person>

        : IList<Person>, IList, IReadOnlyList<Person>

      {

        ...

        public void Add(Person item);

        public void AddRange(IEnumerable<Person> collection);

        public ReadOnlyCollection<Person> AsReadOnly();

        public int BinarySearch(Person item);

        public bool Contains(Person item);

        public void CopyTo(Person[] array);

        public int FindIndex(System.Predicate<Person> match);

        public Person FindLast(System.Predicate<Person> match);

        public bool Remove(Person item);

        public int RemoveAll(System.Predicate<Person> match);

        public Person[] ToArray();

        public bool TrueForAll(System.Predicate<Person> match);

        public Person this[int index] { get; set; }

      }

    }

    Несомненно, когда вы создаете в коде переменную обобщенного типа List<T>, компилятор вовсе не создает новую реализацию класса List<T>. Взамен он принимает во внимание только члены обобщенного типа, к которым вы действительно обращаетесь.

    Указание параметров типа для обобщенных членов

    В необобщенном классе или структуре разрешено поддерживать обобщенные свойства. В таких случаях необходимо также указывать значение заполнителя во время вызова метода. Например, класс System.Array поддерживает набор обобщенных методов. В частности, необобщенный статический метод Sort() имеет обобщенный аналог по имени Sort<T>(). Рассмотрим представленный далее фрагмент кода, где Т — тип int:

    int[] myInts = { 10, 4, 2, 33, 93 };

    // Указание заполнителя для обобщенного метода Sort<>().

    Array.Sort<int>(myInts);

    foreach (int i in myInts)

    {

      Console.WriteLine(i);

    }

    Указание параметров типов для обобщенных интерфейсов

    Обобщенные интерфейсы обычно реализуются при построении классов или структур,которые нуждаются в поддержке разнообразных аспектов поведения платформы (скажем, клонирования, сортировки и перечисления). В главе 8 вы узнали о нескольких необобщенных интерфейсах, таких как IComparable, IEnumerable, IEnumerator и IComparer. Вспомните, что необобщенный интерфейс IComparable определен примерно так:

    public interface IComparable

    {

      int CompareTo(object obj);

    }

    В главе 8 этот интерфейс также был реализован классом Car, чтобы сделать возможной сортировку стандартного массива. Однако код требовал нескольких проверок времени выполнения и операций приведения, потому что параметром был общий тип System.Object:

    public class Car : IComparable

    {

      ...

      // Реализация IComparable.

      int

    1 ... 129 130 131 132 133 134 135 136 137 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

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


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

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

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


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

    Новые отзывы

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