Ватсон Карли
Шрифт:
В указанном примере свойство
Результатом этого кода является:
Примечание. Имена свойств должны быть уникальными.
Как предполагает название, индексаторы позволяют легко индексировать атрибуты объектов. Предположим, что нам необходимо предоставить аналогичную функциональность, не создавая двух отдельных свойств. Можно проиндексировать имеющиеся поля, чтобы они были доступны с помощью некоторого ключа (ключ является значением, используемым для доступа к индексу, для массивов ключ является целым значением), или извлечь объявления двух свойств в примере выше и заменить их следующим:
Затем можно обратиться к атрибутам свойств следующим образом:
В результате мы получим:
События
События C# предоставляют значительно более надежный и гибкий паттерн наблюдателя, чем в Java. Более того, они могут быть объявлены либо как поля, либо как свойства. Создание события является процессом из трех частей. Сначала мы получаем делегата, а затем событие, связанное с этим делегатом, и наконец, когда происходит некоторое действие, вызывается событие.
Проиллюстрируем это, удаляя исключения из класса
Затем объявляется
Наконец, переписывается реализация индексатора для активизации приемника события всякий раз, когда возникает условие исключения: