Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Индексирование с использованием других значений
C# не ограничивает тип индексатора типом "integer". Например, может оказаться полезным использовании в индексаторе строки. Такой индексатор можно реализовать, выполнив поиск строки в коллекции и возвратив соответствующее значением. Методы доступа можно перегружать, версии типа "string" и "integer" могут сосуществовать.
Example 2 Description In this example, a class is declared that stores the days of the week. A get accessor is declared that takes a string, the name of a day, and returns the corresponding integer. For example, Sunday will return 0, Monday will return 1, and so on. Code
Пример 2 Описание В этом примере объявляется класс, в котором хранятся дни недели. Объявляется метод доступа get, который принимает строку (название дня недели) и возвращает соответствующее целое число. Например, воскресенье возвращает 0, понедельник возвращает 1 и т. д. Код ß-------
Output -1 Robust Programming There are two main ways in which the security and reliability of indexers can be improved: · Be sure to incorporate some type of error-handling strategy to handle the chance of client code passing in an invalid index value. In the first example earlier in this topic, the TempRecord class provides a Length property that enables the client code to verify the input before passing it to the indexer. You can also put the error handling code inside the indexer itself. Be sure to document for users any exceptions that you throw inside an indexer accessor. · Set the accessibility of the get and set accessors to be as restrictive as is reasonable. This is important for the set accessor in particular.
ß------
Результат -1 Надежное программирование Существуют два основных способа повышения надежности и безопасности индексаторов. · Внедрите стратегию обработки ошибок на тот случай, если код клиента передаст недопустимое значение индекса. В первом примере, приведенном ранее в этом разделе, класс "TempRecord" предоставляет свойство "Length", позволяющее коду клиента проверить введенные данные перед тем, как передать их индексатору. Также можно поместить код обработки ошибки в индексатор. Задокументируйте для пользователей любые исключения, которые были созданы внутри метода доступа индексатора.
· Установите максимальное обоснованное ограничение доступности для методов доступа get и set. Это особенно важно для метода доступа set. Дополнительные сведения см. в разделе Асимметричные методы доступа.
Indexers in Interfaces Indexers can be declared on an interface. Accessors of interface indexers differ from the accessors of class indexers in the following ways: · Interface accessors do not use modifiers. · An interface accessor does not have a body. Thus, the purpose of the accessor is to indicate whether the indexer is read-write, read-only, or write-only. The following is an example of an interface indexer accessor:
The signature of an indexer must differ from the signatures of all other indexers declared in the same interface.
Индексаторы в интерфейсах Индексаторы можно объявлять на interface. Между методами доступа индексаторов интерфейса и методами доступа индексаторов класса существуют следующие отличия: · Методы доступа интерфейсов не используют модификаторы. · Метод доступа интерфейса не имеет тела. Поэтому метод доступа предназначен для того, чтобы указывать, доступен ли индексатор для чтения и записи, только для чтения или только для записи. Ниже приведен пример метода доступа индексатора интерфейса:
Подпись индексатора должна отличаться от подписей всех других индексаторов, объявленных в том же интерфейсе.
Example The following example shows how to implement interface indexers.
Пример В следующем примере показана реализация индексаторов интерфейса.
ß-----
Output Element #0 = 0 Element #1 = 0 Element #2 = 4 Element #3 = 0
Element #4 = 0 Element #5 = 32 Element #6 = 0 Element #7 = 0 Element #8 = 0 Element #9 = 0 Element #10 = 0 In the preceding example, you could use the explicit interface member implementation by using the fully qualified name of the interface member. For example:
However, the fully qualified name is only needed to avoid ambiguity when the class is implementing more than one interface with the same indexer signature. For example, if an Employee class is implementing two interfaces, ICitizen and IEmployee, and both interfaces have the same indexer signature, the explicit interface member implementation is necessary. That is, the following indexer declaration:
implements the indexer on the IEmployee interface, while the following declaration:
implements the indexer on the ICitizen interface.
ß------ Результат Element #0 = 0 Element #1 = 0 Element #2 = 4 Element #3 = 0 Element #4 = 0 Element #5 = 32 Element #6 = 0 Element #7 = 0 Element #8 = 0 Element #9 = 0 Element #10 = 0 В предыдущем пример можно использовать явную реализацию члена интерфейса с помощью полного имени члена интерфейса. Пример.
Однако, полное имя требуется для исключения неоднозначности только тогда, когда класс реализует более одного интерфейса с одинаковой подписью индексатора. Например, если класс Employee реализует два интерфейса ICitizen и IEmployee с одинаковой подписью индексатора, требуется явная реализация члена интерфейса. Поэтому следующее объявление индексатора:
реализует индексатор для интерфейса IEmployee, а следующее объявление:
реализует индексатор для интерфейса ICitizen.
|
||||||||||||||||||
Последнее изменение этой страницы: 2017-01-19; просмотров: 97; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.66.13 (0.012 с.) |