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

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

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

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

Обобщенные классы, интерфейсы, структуры и делегаты вы можете обнаружить повсюду в библиотеках базовых классов .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" или более просто как "список объектов действующих лиц". После указания параметра типа обобщенного элемента изменить его нельзя (помните, что сущностью обобщений является безопасность в отношении типов). Когда параметр типа задается для обобщенного класса или структуры, все вхождения заполнителя (заполнителей) заменяются предоставленным значением.

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

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

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

namespace System.Collections.Generic

{

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

  {

    ...

    public void Add(<b>T</b> item);

    public void AddRange(IEnumerable&lt;<b>T</b>&gt; collection);

    public ReadOnlyCollection&lt;<b>T</b>&gt; AsReadOnly();

    public int BinarySearch(<b>T</b> item);

    public bool Contains(<b>T</b> item);

    public void CopyTo(<b>T</b>[] array);

    public int FindIndex(System.Predicate&lt;<b>T</b>&gt; match);

    public T FindLast(System.Predicate&lt;<b>T</b>&gt; match);

    public bool Remove(<b>T</b> item);

    public int RemoveAll(System.Predicate&lt;<b>T</b>&gt; match);

    public <b>T</b>[] ToArray();

    public bool TrueForAll(System.Predicate&lt;<b>T</b>&gt; match);

    public <b>T</b> this[int index] { get; set; }

  }

}

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

namespace System.Collections.Generic

{

  public class List&lt;<b>Person</b>&gt;

    : IList&lt;<b>Person</b>&gt;, IList, IReadOnlyList&lt;<b>Person</b>&gt;

  {

    ...

    public void Add(<b>Person</b> item);

    public void AddRange(IEnumerable&lt;<b>Person</b>&gt; collection);

    public ReadOnlyCollection&lt;<b>Person</b>&gt; AsReadOnly();

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

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


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

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

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


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*