ICollection Keys { get; } Подучает коллекцию ключей ICollection Values { get; } Получает коллекцию значений
Следует иметь в виду, что ключи и значения, содержащиеся в коллекции, доступны отдельными списками с помощью свойствKeysиValues.
И наконец, в интерфейсеIDictionaryопределяется следующий индексатор.
TValue this[TKeykey] { get; set; }
Этот индексатор служит для получения и установки значения элемента коллекции, а также для добавления в коллекцию нового элемента. Следует, однако, иметь в виду, что в качестве индекса в данном случае служит ключ элемента, а не сам индекс.
Интерфейсы IEnumerable и IEnumerator
ИнтерфейсыIEnumerableиIEnumeratorявляются обобщенными эквивалентами рассмотренных ранее необобщенных интерфейсовIEnumerableиIEnumerator.В них объявляются аналогичные методы и свойства, да и действуют они по тому же принципу. Разумеется, обобщенные интерфейсы оперируют данными только того типа, который указывается в аргументе типа.
В интерфейсеIEnumerableметодGetEnumerator() объявляется следующим образом.
IEnumerator GetEnumerator()
Этот метод возвращает перечислитель типаТдля коллекции. А это означает, что он возвращает типизированный перечислитель.
Кроме того, в интерфейсеIEnumerableопределяются два таких же метода, как и в необобщенном его варианте:MoveNext () иReset (). В этом интерфейсе объявляется также обобщенный вариант свойстваCurrent.
Т Current { get; }
Это свойство возвращает ссылку типаТна следующий объект. А это означает, что обобщенный вариант свойстваCurrentявляется типизированным.
Но между интерфейсамиIEnumeratorиIEnumeratorимеется одно важное различие: интерфейсIEnumeratorнаследует от интерфейсаIDisposable,тогда как интерфейсIEnumeratorне наследует от него. В интерфейсеIDisposableопределяется методDispose (), который служит для освобождения неуправляемых ресурсов.
ПРИМЕЧАНИЕ
В интерфейсе lEnumerable реализуется также необобщенный интерфейс IEnumerable. Это означает, что в нем поддерживается необобщенный вариант метода GetEnumerator (). Кроме того, в интерфейсе lEnumerable реализуется необобщенный интерфейс IEnumerator, а следовательно, в нем поддерживаются необобщенные варианты свойства Current.
Интерфейс IComparer
ИнтерфейсIComparer<Т>является обобщенным вариантом рассмотренного ранее интерфейсаIComparer.Главное отличие между ними заключается в том, что интерфейсIComparerобеспечивает типовую безопасность. В нем обобщенный вариант методаCompare() объявляется следующим образом.
int Compare(Т х, Т у)