Глава 12. Коллекции. Обобщения
253
терфейса
IDictionaryEnumerator
, члены которого определяются в этом
классе и в дальнейшем послужат
работе оператора цикла
foreach
. Затем
определяются члены интерфейса
ICollection
, т. к. некоторые члены
IDictionary
имеют тип
ICollection
. В частности, свойства
Keys
(ключи)
и
Values
(значения). И, наконец, определяется единственный член
интерфейса
IEnumerable
, который
создает перечислитель типа
IEnumerator
, необходимый для работы оператора цикла
foreach
.
Далее работает основная программа. В ней конструктором создается
объект
d
— массив из трех элементов, который затем наполняется кон-
кретными элементами. Это пары типа "ключ — значение". То есть
обычный словарь. Ключом служат имена людей, значениями — их
воз-
раст. Добавка в массив происходит методом
add()
— членом интерфей-
са
IDictionary
. Членами этого же интерфейса выполняются действия по
выводу на экран количества элементов в словаре, проверка, содержится
ли ключ "Иван" в словаре, и определяется
возраст человека с именем
Иван. В последнем случае поиск строки с ключом "Иван" происходит
по индексу. Именно в этом месте основная программа вызывает свойст-
во "индексатор", чтобы с его помощью найти соответствующую стро-
ку в словаре: индексатор ищет в словаре с помощью метода
TryGetIndexOfKey()
по ключу соответствующую строку, определяет ее
индекс в массиве и по индексу извлекает из
массива значение элемента,
т. е. возраст. После этого в основной программе демонстрируется рабо-
та члена интерфейса
IDictionary
по удалению строк из словаря.
Далее в основной программе выводится на экран содержимое словаря
парами "ключ — значение". Здесь применяется оператор
foreach
, кото-
рый и требует наличия двух интерфейсов —
IEnumerator
и
IEnumerable
.
Детальные комментарии даны по тексту программы. Однако для лучше-
го понимания механизма работы всех элементов программы рекоменду-
ется ее
прокрутить в режиме отладки, начиная с первой строки основ-
ной программы. Напомним, что при пошаговой отладке продвижение по
операторам выполняется нажатием клавиши
, вход вовнутрь
строки (если это вызов метода) — клавишей , дальнейшее про-
движение по строкам метода — или , исполнение всех
команд до следующей точки останова — клавишей . Просмотр со-
держимого переменных осуществляется наведением курсора мыши на
имя переменной: через некоторое время появятся результаты, выдавае-
мые подсказчиком среды разработки.