Поделиться через


Универсальные интерфейсы

Обновлен: Ноябрь 2007

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

Универсальные интерфейсы

Универсальные интерфейсы — это строго типизированные аналоги неуниверсальных интерфейсов, предназначенные для сортировки и сравнения на равенство, а также для реализации функциональности, совместно используемой универсальными коллекциями.

Сортировка и сравнение на равенство

Как и у их неуниверсальных аналогов, у универсальных интерфейсов System.IComparable<T> и System.IEquatable<T> из пространства имен System определены, соответственно, методы для сортировки и сравнения на равенство. Типы реализуют эти интерфейсы для обеспечения возможности выполнения этих действий.

Универсальные интерфейсы IComparer<T> и IEqualityComparer<T> из пространства имен System.Collections.Generic предоставляют способ определения операции упорядочения или сравнения на равенство для типов, в которых не реализуются универсальные интерфейсы System.IComparable<T> или System.IEquatable<T>, а также дают возможность переопределения этих отношений тем типам, которые реализуют эти интерфейсы. Эти интерфейсы используются методами и конструкторами многих универсальных классов коллекций. К примеру, конструктору класса SortedDictionary<TKey, TValue> можно передать универсальный объект IComparer<T>, чтобы указать порядок сортировки для типа, в котором не реализован универсальный интерфейс System.IComparable<T>. Существуют перегрузки универсального статического метода Array.Sort и метода экземпляра List<T>.Sort, предназначенные для сортировки массивов и списков с помощью реализаций универсального интерфейса IComparer<T>.

Универсальные классы Comparer<T> и EqualityComparer<T> являются базовыми для реализаций универсальных интерфейсов IComparer<T> и IEqualityComparer<T>; эти классы предоставляют методы сортировки и сравнения на равенство по умолчанию через соответствующие свойства Comparer<T>.Default и EqualityComparer<T>.Default.

Функциональность коллекций

Универсальный интерфейс ICollection<T> является базовым для универсальных типов коллекций. В нем предоставляются основные функциональные возможности для добавления, удаления, копирования и перечисления элементов. Интерфейс ICollection<T> наследует от универсального интерфейса IEnumerable<T> и неуниверсального интерфейса IEnumerable.

Универсальный интерфейс IList<T> дополняет универсальный интерфейс ICollection<T> методами для получения элементов по индексу.

Универсальный интерфейс IDictionary<TKey, TValue> дополняет универсальный интерфейс ICollection<T> методами для получения элементов по ключу. Универсальные типы словарей в библиотеке базовых классов .NET Framework также реализуют неуниверсальный интерфейс IDictionary.

Универсальный интерфейс IEnumerable<T> формирует универсальную структуру перечислителя. Универсальный интерфейс IEnumerator<T>, реализуемый универсальными перечислителями, наследует от неуниверсального интерфейса IEnumerator; его члены MoveNext и Reset, не зависящие от параметра типа T, присутствуют только в неуниверсальном интерфейсе. Это означает, что любой потребитель неуниверсального интерфейса также может использовать универсальный интерфейс.

См. также

Основные понятия

Общие сведения об универсальных шаблонах в .NET Framework

Универсальные коллекции в .NET Framework

Универсальные делегаты для управления массивами и списками

Преимущества и ограничения универсальных шаблонов

Ссылки

System.Collections.Generic

System.Collections.ObjectModel

Другие ресурсы

Универсальные шаблоны в платформе .NET Framework