ICollection
Интерфейс ICollection определяется производным от IEnumerable; он дополняет этот интерфейс тремя свойствами, доступными только для чтения, и одним новым методом. Класс ICollection редко реализуется самостоятельно. Как правило, он образует базу для интерфейсов IList и IDictionary (см. ниже). Члены этого интерфейса перечислены в табл. 5.2.
Таблица 5.2. Члены интерфейса ICollection.
Метод/свойство | Описание |
---|---|
Count (свойство) | Возвращает количество элементов в коллекции |
IsSynchronized (свойство) | Используется в многопоточных приложениях (см. главу 12). Свойство возвращает True, если доступ к коллекции синхронизируется с учетом многопоточного доступа |
SyncRoot (свойство) | Также используется в многопоточных приложениях (см. главу 12). Свойство возвращает объект для синхронизации доступа к коллекции |
CopyТо (метод) | Копирует элементы из коллекции в массив, начиная с заданной позиции |
Примечание
Интерфейс ICollection реализуется классом System.Collections.CollectionBase.IList.
Интерфейс IList обеспечивает выборку элементов коллекции по индексу. Разумеется, поскольку этот интерфейс определяется производным от IEnumerable, при этом сохраняется возможность использования For-Each. Иерархия наследования IList выглядит следующим образом:
IEnumerable › ICollection › IList
Интерфейс IList относительно сложен – он состоит из трех свойств и семи методов (табл. 5.3). Напомним, что некоторые из методов могут быть пустыми, если в каком-то конкретном классе их реализация не имеет смысла.
Таблица 5.3. Члены интерфейса IList.
Метод/свойство | Описание |
---|---|
IsFixedSize (свойство) | Логическое свойство. Показывает, имеет ли коллекция фиксированный размер |
IsReadOnly (свойство) | Логическое свойство. Показывает, доступна ли коллекция только для чтения |
Item (свойство) | Свойство доступно для чтения и записи. Используется для получения и присваивания значения объекта с заданным индексом |
Add (ByVal value As Object) As Integer (метод) | Включает объект в текущую позицию списка. Метод должен возвращать индекс, присвоенный добавленному элементу |
Clear (метод) | Удаляет все элементы из списка |
Contains (ByVal value As Object) As Boolean (метод) | Метод предназначен для проверки наличия в списке заданного значения. Эффективная реализация этого метода иногда бывает весьма нетривиальной задачей. Если элемент присутствует в списке, метод возвращает True; в противном случае возвращается False |
IndexOf (ByVal value As Object) As Integer (метод) | Возвращает индекс заданного объекта в списке (программист также должен учитывать эффективность реализации этого метода) |
Insert(ByVal index As Integer, ByVal value As Object) (метод) | Вставляет объект в заданную позицию списка |
Remove(ByVal value As Object) (метод) | Удаляет первое вхождение заданного объекта в списке |
Remove(ByVal index As Integer) (метод) | Удаляет элемент, находящийся в заданной позиции |
Примечание
Интерфейс IList реализуется классом System.Collections.CollectionBase.