Интерфейс
Описание
IEnumerable<T>
Определяет обобщенный метод GetEnumerator (),
-
предоставляющий перечислитель для любого класса
коллекции
Enumerator<T>
Предоставляет методы, позволяющие получать содержи
мое коллекции по очереди
IEqualityComparer<T>
Сравнивает два объекта на предмет равенства
IList<T>
Определяет обобщенную коллекцию, доступ к которой
можно получить с помощью индексатора
Интерфейс ICollection<T>
В интерфейсе ICollection<T> определен ряд свойств, которые являются общими для всех обобщенных коллекций. Интерфейс ICollection<T> является обобщенным вариантом необобщенного интерфейса icollection, хотя между ними имеются некоторые отличия.
Итак, в интерфейсе ICollection<T> определены следующие свойства.
int Count { get; } bool IsReadOnly { get; }
Свойство Count содержит ряд элементов, хранящихся в данный момент в коллекции. А свойство IsReadOnly имеет логическое значение true, если коллекция доступна только для чтения. Если же коллекция доступна как для чтения, так и для записи, то данное свойство имеет логическое значение false.
Кроме того, в интерфейсе ICollection<T> определены перечисленные ниже методы. Обратите внимание на то, что в этом обобщенном интерфейсе определено несколько большее количество методов, чем в его необобщенном аналоге.
Метод
Описание
void Add(T
void Clear()
bool Contains(T
void CopyTo(T[]
void Remove(T
Добавляет элемент
Копирует содержимое вызывающей коллекции в массив
Удаляет первое вхождение элемента
Некоторые из перечисленных выше методов генерируют исключение NotSupportedException, если коллекция доступна только для чтения.
А поскольку интерфейс ICollection<T> наследует от интерфейсов IEnumerable и IEnumerable<T>, то он включает в себя также обобщенную и необобщенную формы метода GetEnumerator ().
Благодаря тому что в интерфейсе ICollection<T> реализуется интерфейс IEnumerable<T>, в нем поддерживаются также методы расширения, определенные в классе Enumerable. Несмотря на то что методы расширения предназначены главным образом для поддержки LINQ, им можно найти и другое применение, в том числе и в коллекциях.
Интерфейс IList<T>
В интерфейсе IList<T> определяется такое поведение обобщенной коллекции, которое позволяет осуществлять доступ к ее элементам по индексу с отсчетом от нуля. Этот интерфейс наследует от интерфейсов IEnumerable, IEnumerable<T> и ICollection<T> и поэтому является обобщенным вариантом необобщенного интерфейса IList. Методы, определенные в интерфейсе IList<T>, перечислены в табл. 25.11. В двух из этих методов предусматривается модификация коллекции. Если же коллекция доступна только для чтения или имеет фиксированный размер, то методы Insert () и RemoveAt () генерируют исключение NotSupportedException.
Таблица 25.11. Методы, определенные в интерфейсе IList<T>
Метод
Описание
int IndexOf(Т
void Insert(int
T
void RemoveAt(int
Возвращает индекс первого вхождения элемента
Удаляет из вызывающей коллекции элемент, расположенный по указанному индексу
