Виртуальные члены
Член virtual (Overridable в Visual Basic) позволяет изменить поведение члена путем предоставления другой его реализации. Такие члены обычно используются, когда требуется, чтобы производный класс этого типа учитывал особенности конкретного сценария. Например, класс WebRequest определяет функциональные возможности для отправки запроса на любой универсальный идентификатор ресурса (URI). Класс FtpWebRequest является производным классом от WebRequest, который перегружает его виртуальные методы для отправки запросов на идентификаторы URI, использующие протокол FTP.
Виртуальные члены работают лучше, чем обратные вызовы и события, однако их производительность уступает невиртуальным методам.
Определяйте члены как виртуальные лишь в том случае, если для этого имеется существенная необходимость. Следует также оценить все затраты, связанные с проектированием, тестированием и поддержкой виртуальных членов.
Изменение реализации виртуального члена от версии к версии может стать причиной некоторой несовместимости версий. Поэтому создание виртуальных членов наиболее трудоемко вследствие необходимости тщательного проектирования и тестирования.
Для виртуальных членов рекомендуется использовать защищенный, а не открытый доступ. При необходимости открытые члены должны предоставлять возможность расширения путем вызова защищенных виртуальных членов.
Члены, необходимые для всех сценариев, в которых не используется наследование, должны быть открытыми.
Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.
Фрагменты — © Addison-Wesley Corporation. Все права защищены.
Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.