Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Namespace ChllCardLib




Set

Get

{

return (Animal) Dictionary [animalID];

}

{

Dictionary[animalID] = value;

}

}

}

Вот какие различия имеются между этими членами:

• Add() принимает два параметра: ключ и значение, которые будут храниться совместно. У данного семейства, построенного по алфавитному принципу, есть член с именем Dictionary, наследуемый от класса DictionaryBase. Он является интерфейсом IDictionary, имеющим собственный метод Add() с двумя параметрами типа object. Наша реализация предусматривает передачу значения типа string в качестве ключа и передачу объекта типа Animal.

• Remove() получает в качестве параметра ключ, а не ссылку на объект. Элемент, обладающий значением, заданным с помощью ключа, удаляется.

• Индексатор использует вместо индекса значение ключа в виде строки, что позволяет осуществлять доступ к хранящемуся элементу через наследуемый член Dictionary. Повторим еще раз, что в данном случае приведение типа является обязательным.

Еще одним отличием семейств с базовым классом DictionaryBase от семейств с базовым классом CollectionBase является то, что для них немного по-разному выполняется конструкция foreach. Семейство из предыдущего раздела допускает непосредственное извлечение объектов типа Animal. Использование конструкции foreach с классом, производным от DictionaryBase, приводит к получению структур типа DictionaryEntry — еще одного типа, описанного в пространстве имен System.Collections. Для того чтобы добраться до самих объектов типа Animal, необходимо воспользоваться членом этой структуры value, хотя для получения доступа к соответствующему ключу можно также использовать член данной структуры кеу.

Теперь использовавшемуся ранее коду:

foreach (Animal myAnimal in animalCollection)

{

Console.WriteLine(“New {0} object added to custom collection,” +

“Name = {1}”, myAnimal.ToString(), myAnimal.Name());

будет эквивалентен следующий код:

foreach (DietionaryEntry myEntry in animalCollection)

{

Console.WriteLine(“New {0} object added to custom collection,” +

“Name = {1}”, myEntry.Value.ToString(), ((Animal)myEntry.Value).Name);

}

На самом деле можно переопределить это поведение таким образом, чтобы извлекать объекты непосредственно с помощью конструкции foreach.

Усовершенствование CardLib, часть 1

Мы рассматривали проект библиотеки классов под названием Ср10cardLib, в котором содержался класс Card, представляющий игральные карты, и класс Deck, представляющий колоду карт, т. е. являющийся семейством объектов класса card. Это семейство было реализовано в виде простого массива.

Теперь добавим в эту библиотеку, которую переименуем в Ср10cardLib, еще один класс. Этот новый класс — назовем его Cards — будет представлять созданное пользователем семейство объектов типа Card, что позволит использовать преимущества, о которых рассказывалось в данной главе. Код, описывающий этот класс, находится в файле Сards.es и имеет следующий вид (изменения в коде, созданном мастером, выделены серым цветом):

using Systern;

using System.Collections;

{

/// <summary>




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 250; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.