Интерфейс | Описание |
---|---|
ICollection | Определяет общие характеристики (такие, как защищенность счетчиков и цепочек) для типа коллекции |
IComparer | Позволяет сравнение двух объектов |
IDictionary | Позволяет объекту представить его содержимое с помощью пар имен и значений |
IDictionaryEditor | Перечисляет содержимое типа, поддерживающего IDictionary |
IEnumerable | Возвращает интерфейс IEnumerator для данного объекта |
IEnumerator | Обеспечивает общую поддержку перечисления подтипов с помощью foreach |
IHashCodeProvider | Возвращает хеш-код для реализующего типа, используя настраиваемый механизм хеширования |
IKeyComparer | Этот интерфейс является новым в .NET 2.0). Объединяет функциональные возможности IComparer и IHashCodeProvider, чтобы обеспечить сравнение объектов по их хеш-кодам (если объекты (равны, то они должны возвращать одинаковые хеш-коды) |
IList | Обеспечивает возможность добавления, удаления и индексирования элементов в списке объектов. Кроме того, с помощью членов этого интерфейса можно выяснить, является ли данный тип-контейнер коллекции доступным только для чтения, и имеет ли он фиксированный размер |
Многие из этих интерфейсов связаны иерархией интерфейсов, в то время как другие являются автономными единицами. На рис. 7.12 показана схема взаимосвязей между указанными типами (напомним, что один интерфейс может быть производным от нескольких интерфейсов).
Рис. 7.12. Иерархия интерфейсов System.Collections
Интерфейс ICollection
Интерфейс ICollection является простейшим интерфейсом пространства имен System.Collections в том смысле, что этот интерфейс определяет поведение, поддерживаемое любым типом коллекции. По сути, этот интерфейс обеспечивает узкий набор свойств, которые позволяют определить: а) число элементов в контейнере; б) защищенность цепочки контейнера; в) возможность копирования содержимого в тип System.Array. Формально ICollection определяется так, как показано ниже (обратите внимание на то, что ICollection расширяет IEnumerable).
public interface ICollection
// Член IEnumerable.
int Count { get; }
bool IsSynchronized { get; }
object SyncRoot { get; }
void CopyTo(Array array, int index);
}
Интерфейс IDictionary
Вы, возможно, знаете, что
public interface IDictionary
bool IsFixedSize { get; }
bool IsReadOnly { get; }
object this [object key] { get; set; }
ICollection Keys { get; }
ICollection Values { get; }
void Add(object key, object value);
void Clear();
bool Contains(Object key);
IDictionaryEnumerator GetEnumerator()
void Remove(object key);
}
Интерфейс IDictionaryEnumerator
При внимательном чтении вы могли заметить, что IDictionary.GetEnumerator() возвращает экземпляр IDictionaryEnumerator. Тип IDictionaryEnumerator – это строго типизованный нумератор, расширяющий IEnumerator путем добавления следующей функциональной возможности.
public interface IDictionaryEnumerator