Язык программирования C#9 и платформа .NET5. Страница 203
public int BinarySearch(<b>Person</b> item); public bool Contains(<b>Person</b> item); public void CopyTo(<b>Person</b>[] array); public int FindIndex(System.Predicate<<b>Person</b>> match); public Person FindLast(System.Predicate<<b>Person</b>> match); public bool Remove(<b>Person</b> item); public int RemoveAll(System.Predicate<<b>Person</b>> match); public <b>Person</b>[] ToArray(); public bool TrueForAll(System.Predicate<<b>Person</b>> match); public <b>Person</b> this[int index] { get; set; } }}Несомненно, когда вы создаете в коде переменную обобщенного типа
List<T>List<T>Указание параметров типа для обобщенных членов
В необобщенном классе или структуре разрешено поддерживать обобщенные свойства. В таких случаях необходимо также указывать значение заполнителя во время вызова метода. Например, класс
System.ArraySort()Sort<T>()Тintint[] myInts = { 10, 4, 2, 33, 93 };<b>// Указание заполнителя для обобщенного метода Sort<>().</b>Array.Sort<int>(myInts);foreach (int i in myInts){ Console.WriteLine(i);}Указание параметров типов для обобщенных интерфейсов
Обобщенные интерфейсы обычно реализуются при построении классов или структур,которые нуждаются в поддержке разнообразных аспектов поведения платформы (скажем, клонирования, сортировки и перечисления). В главе 8 вы узнали о нескольких необобщенных интерфейсах, таких как
IComparableIEnumerableIEnumeratorIComparerIComparablepublic interface IComparable{ int CompareTo(object obj);}В главе 8 этот интерфейс также был реализован классом
CarSystem.Objectpublic class Car : IComparable { ... // Реализация IComparable. int IComparable.CompareTo(object obj) { if (obj is Car temp) { return this.CarID.CompareTo(temp.CarID); } throw new ArgumentException("Parameter is not a Car!"); // Параметр не является объектом типа Car! } }Теперь представим, что применяется обобщенный аналог данного интерфейса:
public interface IComparable<T>{ int CompareTo(T obj);}В таком случае код реализации будет значительно яснее:
public class Car : IComparable<Car>{ ... // Реализация IComparable<T>. int IComparable<Car>.CompareTo(Car obj) { if (this.CarID > obj.CarID) { return 1; } if (this.CarID < obj.CarID) { return -1; } return 0; }}Здесь уже не нужно проверять, относится ли входной параметр к типу
CarCarSystem.Collections.GenericПространство имен System.Collections.Generic
Когда вы строите приложение .NET Core и необходим способ управления данными в памяти, классы из пространства имен
System.Collections.GenericSystem.Collections.Generic