В силу характерных отличий каждый из пяти типов коллекций (необобщенных, обобщенных, специальных, с поразрядной организацией и параллельных) будет рассмотрен далее в этой главе отдельно.
Необобщенные коллекции
Необобщенные коллекции вошли в состав среды .NET Framework еще в версии 1.0. Они определяются в пространстве имен System.Collections
Необобщенные коллекции определены в ряде интерфейсов и классов, реализующих эти интерфейсы. Все они рассматриваются далее по порядку.
Интерфейсы необобщенных коллекций
В пространстве имен System.Collections
Таблица 25.1. Интерфейсы необобщенных коллекций
Интерфейс -
ОписаниеICollection -
Определяет элементы, которые должны иметь все необобщенные коллекцииIComparer -
Определяет метод Compare() для сравнения объектов, хранящихся в коллекцииIDictionary -
Определяет коллекцию, состоящую из пар “ключ-значение”IDictionaryEnumerator -
Определяет перечислитель для коллекции, реализующей интерфейс IDictionaryIEnumerable -
Определяет метод GetEnumerator(), предоставляющий перечислитель для любого класса коллекцииIEnumerator -
Предоставляет методы, позволяющие получать содержимое коллекции по очередиIEqualityComparer -
Сравнивает два объекта на предмет равенстваIHashCodeProvider -
Считается устаревшим. Вместо него следует использовать интерфейс IEqualityComparerIList -
Определяет коллекцию, доступ к которой можно получить с помощью индексатораIStructuralComparable -
Определяет метод CompareTo(), применяемый для структурного сравненияIStructuralEquatable -
Определяет метод Equals(), применяемый для выяснения структурного, а не ссылочного равенства. Кроме того, определяет метод GetHashCode()Интерфейс ICollection
IEnumerable
.В интерфейсе ICollection
Count
используется чаще всего, поскольку оно содержит количество элементов, хранящихся в коллекции на данный момент. Если значение свойства Count
равно нулю, то коллекция считается пустой.В интерфейсе ICollection
void CopyTo(Array target, int startldx)
Свойство -
Назначениеint Count { get; } -
Содержит количество элементов в коллекции на данный моментbool isSynchronized { get; } -
Принимает .логическое значениеtrue
, если коллекция синхронизирована, а иначе — логическое значение false
. По умолчанию коллекции не синхронизированы. Но для большинства коллекций можно получить синхронизированный вариантobject SyncRoot { get; } -
Содержит объект, для которого коллекция может быть синхронизированаМетод CopyTo()
CopyTo()
обеспечивает в C# переход от коллекции к стандартному массиву.Благодаря тому что интерфейс ICollection
IEnumerable
, в его состав входит также единственный метод, определенный в интерфейсе IEnumerable
. Это метод GetEnumerator()
, объявляемый следующим образом.IEnumerator GetEnumerator()
Он возвращает перечислитель для коллекции.