Часть II. Объектно-ориентированное программирование
public IDictionaryEnumerator GetEnumerator()
{ // Создание перечислителя
return new SimpleDictionaryEnumerator(this);
}
#endregion // Специальная область, позволяющая
// редактору среды сворачивать,
// разворачивать ее содержимое для удобства
// пользования (конец области)
// Члены интерфейса ICollection: должны быть
// обязательно определены в производном классе
// (таковы правила C#), хотя могут и не участвовать
// в расчетах
#region ICollection Members
public bool IsSynchronized
{ get { return false; } }
public object SyncRoot
{ get { throw new NotImplementedException(); } }
public int Count { get { return ItemsInUse; } }
public void CopyTo(Array array, int index)
{ throw new NotImplementedException(); }
#endregion
#region IEnumerable Members // Члены интерфейса
// "Перечислитель"
IEnumerator IEnumerable.GetEnumerator()
{ // Создание перечислителя
return ((IDictionary)this).GetEnumerator();
}
#endregion
}
public sealed class App
{
static void Main()
{
// Создание словаря, содержащего не более трех входов
IDictionary d = new SimpleDictionary(3);
// Добавление трех человек с их возрастами к словарю.
d.Add("Иван", 40);
Глава 12. Коллекции. Обобщения
251
d.Add("Петр", 34);
d.Add("Андрей", 1);
Console.WriteLine("Количество элементов в словаре = {0}",
d.Count);
Console.WriteLine("Содержит ли словарь 'Ивана'? {0}",
d.Contains("Иван"));
/* Здесь срабатывает индексатор: как только
встречается переменная с индексом (в данном случае
d["Иван"]), управление передается индексатору,
который и вычисляет значение переменной с индексом.
Индекс должен быть заданного типа (в нашем случае
это строка символов)) */
Console.WriteLine("Возраст Ивана: {0}", d["Иван"]);
// Вывод каждого входного ключа и к нему значения
foreach (DictionaryEntry de in d)
{
Console.WriteLine("{0}: Возраст равен {1} годам",
de.Key, de.Value);
}
// Удаление одного существующего входа
Console.WriteLine("Удаление входа с ключом 'Иван'");
d.Remove("Иван");
// Удаление несуществующего входа без выдачи
// исключения.
Console.WriteLine("Удаление несуществующего " +
"входа с ключом 'Макс'");
d.Remove("Макс");
// Вывод имен (это ключи) людей в словаре.
// Keys — свойство класса, в котором формируются
// отдельно ключи словаря
Console.WriteLine("Вывод ключей словаря");
foreach (String s in d.Keys)
Console.WriteLine(s);
252
Do'stlaringiz bilan baham: |