Вариации индексатора для типа Garage

Вариации индексатора для типа Garage

В своем текущем виде тип Gаrage определяет индексатор, который позволяет вызывающей стороне идентифицировать внутренние элементы, используя число-вое значение. Но это не является непременным требованием метода индексатора. Предположим, что объекты Car содержатся в System.Collections.Specialized. ListDictionary, а не в ArrayList. Поскольку типы ListDictionary позволяют доступ к содержащимся типам с помощью ключевых маркеров (таких как, например, строки), можно создать новый индексатор Garage, подобный показанному ниже.

public class Garage: IEnumerable {

 private ListDictionary carDictionary = new ListDictionarу();

 // Этот индексатор возвращает соответствующий тип Car

 // на основе строкового индекса.

 public Car this[string name] {

  get { return (Car)carDictionary[name]; }

  set { carDictionary[name] = value; }

 }

 public int Length { get { return carDictionary.Count; } }

 public IEnumerator GetEnumerator() { return carDictionary.GetEnumerator(); }

}

Вызывающая сторона теперь может взаимодействовать с машинами внутри так, как показано ниже,

public class Program {

 static void Main(string[] args) {

  Console:WriteLine("***** Забавы с индексаторами ***** ");

  Garage carLot = new Garage();

  // Добавление именованных машин в гараж.

  carLot["FeeFee"] = new Car("FeeFee", 200, 0);

  carLot["Clunker"] = new Car("Clunker", 90, 0);

  carLot["Zippy"] = new Car("Zippy", 30, 0);

  // Доступ к Zippy.

  Car zippy = carLot["Zippy"];

  Console.WriteLine("{0} едет со скоростью {1} км/ч", zippy.PetName, zippy.CurrSpeed);

  Console.ReadLine();

 }

}

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

Исходный код. Проект StringIndexer размещен в подкаталоге, соответствующем главе 9.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Вариации по теме: Сбор кредитных карт

Из книги Искусство обмана автора Митник Кевин

Вариации по теме: Сбор кредитных карт Строя доверие не обязательно требуется делать целую серию звонков, как в предыдущей истории. Я расскажу один случай, где мне потребовалось всего пять минут.Сюрприз для ПапыЯ один раз сидел за столом в ресторане с Генри и его отцом. В


Вариации по теме

Из книги C++ автора Хилл Мюррей

Вариации по теме В эту эру Интернета, существует вид мошенничества, который перенаправляет вас совсем не на тот вэб-сайт, который вы ожидали. Это случается регулярно и имеет разнообразные формы проявлений. Этот пример является типичным.С Новым Годом…Отставной страховой


Вариации по вариации

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

Вариации по вариации Как много других путей существует, чтобы ввести в заблуждение пользователей компьютера и заставить посетить фальшивый веб сайт, где они предоставят свою личную информацию? Я не думаю, что у кого-то есть точный ответ на этот вопрос, но фраза «множество


3.2.5 Преобразование типа

Из книги Справочное руководство по C++ автора Страустрап Бьярн

3.2.5 Преобразование типа Бывает необходимо явно преобразовать значение одного тпа в значение другого. Явное преобразование типа дает значние одного типа для данного значения другого типа. Например:float r = float(1);перед присваиванием преобразует целое значение 1 к знчению с


7.2.7 Поля Типа

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

7.2.7 Поля Типа Чтобы использовать производные классы не просто как удобную сокращенную запись в описаниях, надо разрешить следющую проблему: Если задан указатель типа base*, какому проиводному типу в действительности принадлежит указываемый обект? Есть три основных


8.2 Спецификаторы Типа

Из книги Цифровой журнал «Компьютерра» № 80 [01.08.2011 — 07.08.2011] автора Журнал «Компьютерра»

8.2 Спецификаторы Типа Спецификаторами типов (спецификатор_типа) являются:спецификатор_типа:простое_имя_типа спецификатор_класса enum-спецификатор сложный_спецификатор_типа constСлово const можно добавлять к любому допустимому спецфикатору_типа. В остальных случаях в


12.5.1 Редакторы типа vi

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

12.5.1 Редакторы типа vi Редактор vi (или его несколько доработанные потомки) по умолчанию включается в любую UNIX-подобную систему, в том числе и во все дистрибутивы Linux. Все приверженцы UNIX, имеющие значительный стаж работы с этими ОС, знают и используют этот редактор. Описание


R.7.1.6 Спецификация типа

Из книги VBA для чайников автора Каммингс Стив

R.7.1.6 Спецификация типа К спецификации типа относятся:спецификация-типа: имя-простого-типа спецификация-класса спецификация-перечисления спецификация-сложного-типа :: имя-класса const volatileПри описании объекта служебные слова const и volatile можно добавить к любой законной


R.14 ШАБЛОНЫ ТИПА

Из книги Ноутбук для начинающих. Мобильно, доступно, удобно автора Ковалевский Анатолий Юрьевич

R.14 ШАБЛОНЫ ТИПА R.14.1 Шаблоны типа Шаблон типа определяет целое семейство типов или функций.описание-шаблона-типа: template ‹ список-параметров-шаблона-типа › описаниесписок-параметров-шаблона-типа: параметр-шаблона-типа список-параметров-шаблона-типа ,


R.14.1 Шаблоны типа

Из книги автора

R.14.1 Шаблоны типа Шаблон типа определяет целое семейство типов или функций.описание-шаблона-типа: template ‹ список-параметров-шаблона-типа › описаниесписок-параметров-шаблона-типа: параметр-шаблона-типа список-параметров-шаблона-типа ,


R.17.8 Шаблоны типа

Из книги автора

R.17.8 Шаблоны типа описание-шаблона-типа: template ‹ список-параметров-шаблона-типа › описаниесписок-параметров-шаблона-типа: параметр-шаблона-типа список-параметров-шаблона-типа ,


Вариации метода Main()

Из книги автора

Вариации метода Main() Предыдущий вариант Main() был определен с одним параметром (массивом строк) и возвращал данные типа int. Однако это не единственно возможная форма Main(). Для построения точки входа приложения можно использовать любую из следующих сигнатур (в предположении,


Кафедра Ваннаха: Вариации истории Ваннах Михаил

Из книги автора

Кафедра Ваннаха: Вариации истории Ваннах Михаил Опубликовано 04 августа 2011 года Жизнь каждого из нас в куда большей степени определяется процессами в социуме, нежели в природе. Ну вот сейчас вроде всё стабильно: ни землетрясений, ни взрывов


Характеристики при вариации по температуре

Из книги автора

Характеристики при вариации по температуре Создайте в Capture новый проект с именем diodeswp и введите схему, показанную на рис. 17.4. Значения следующие: V1=20 В, R1=4,8 Ом, для компонента D (из библиотеки eval) выбран тип D1N4002. Цель этого анализа состоит в том, чтобы показать влияние


Отличия процедур типа Function от процедур типа Sub

Из книги автора

Отличия процедур типа Function от процедур типа Sub Между процедурами типа Function и типа Sub есть одно существенное отличие: в процедуре типа Function обязательно где-то должен присутствовать по крайней мере один оператор, задающий значение этой функции. При этом используется имя


Три типа «одежки»

Из книги автора

Три типа «одежки» Все многообразие видов кейсов для ноутбуков можно свести к трем позициям:Сумка. Классическими портфелями-сумками заполнено более 90 % рынка. Может иметь вид женской сумочки, портфеля, кофра, саквояжа, дипломата, чемодана. Имейте в виду, что элементы