Поделиться через


Тени (Visual Basic)

Указывает, что объявленный элемент программирования редекларирует и скрывает идентичный именованный элемент или набор перегруженных элементов в базовом классе.

Замечания

Основная цель тени (которая также называется скрытием по имени) заключается в сохранении определения членов класса. Базовый класс может измениться таким образом, что создаст элемент с тем же именем, как у уже определённого. Если это случается, модификатор Shadows принуждает ссылки через ваш класс разрешаться на определенный вами элемент, вместо того чтобы вести к новому элементу базового класса.

Как тени, так и переопределение переопределения унаследованного элемента, но существуют значительные различия между двумя подходами. Дополнительные сведения см. в разделе "Тени" в Visual Basic.

Правила

  • Контекст объявления. Можно использовать Shadows только на уровне класса. Это означает, что контекст объявления для Shadows элемента должен быть классом и не может быть исходным файлом, пространством имен, интерфейсом, модулем, структурой или процедурой.

    Можно объявить только один элемент тени в одной инструкции объявления.

  • Объединенные модификаторы. Нельзя указать Shadows вместе с Overloads, Overridesили Static в том же объявлении.

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

  • Доступа к. Теневой элемент базового класса обычно недоступен в производном классе, который тенирует его. Однако применяются следующие рекомендации.

    • Если элемент тени недоступен из кода, ссылающегося на него, ссылка разрешается в теневой элемент. Например, если Private элемент тени элемента базового класса, код, который не имеет разрешения на доступ Private к элементу базового класса, обращается к элементу базового класса.

    • Если вы тени элемента, вы по-прежнему можете получить доступ к теневым элементу через объект, объявленный типом базового класса. Вы также можете получить доступ к нему через MyBase.

Модификатор Shadows можно использовать в следующих контекстах:

См. также