Некоторые из перечисленных выше методов генерируют исключение NotSupportedException, если коллекция доступна только для чтения.
А поскольку интерфейс ICollection наследует от интерфейсов IEnumerable и IEnumerable, то он включает в себя также обобщенную и необобщенную формы метода GetEnumerator().
Благодаря тому что в интерфейсе ICollection реализуется интерфейс IEnumerable, в нем поддерживаются также методы расширения, определенные в классе Enumerable. Несмотря на то что методы расширения предназначены главным образом для поддержки LINQ, им можно найти и другое применение, в том числе и в коллекциях.
В интерфейсе IList определяется такое поведение обобщенной коллекции, которое позволяет осуществлять доступ к ее элементам по индексу с отсчетом от нуля. Этот интерфейс наследует от интерфейсов IEnumerable, IEnumerable и ICollection и поэтому является обобщенным вариантом необобщенного интерфейса IList. Методы, определенные в интерфейсе IList, перечислены в табл. 25.11. В двух из этих методов предусматривается модификация коллекции. Если же коллекция доступна только для чтения или имеет фиксированный размер, то методы Insert() и RemoveAt() генерируют исключение NotSupportedException.
Таблица 25.11. Методы, определенные в интерфейсе IList
Метод - Описание
int IndexOf(Т
void Insert(int
void RemoveAt(int
Кроме того, в интерфейсе IList определяется индексатор
Т this[int index] { get; set; }
который устанавливает или возвращает значение элемента коллекции по указанному индексу
В интерфейсе IDictionary
Таблица 25.12. Методы, определенные в интерфейсе IDictionaryCTKey, TValue>
Метод - Описание
void Add(TKey
bool Contains(TKey
bool Remove(TKey
bool TryGetValue(TKey
Кроме того, в интерфейсе IDictionary определены перечисленные ниже свойства.
Свойство - Описание
ICollection Keys
ICollection Values
Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойств Keys и Values.
И наконец, в интерфейсе IDictionary определяется следующий индексатор.