c #: наследуемое свойство get класса, «вернуть this.x как DerivedClass» или «вернуть base.x как DerivedClass». Какая разница? - PullRequest
0 голосов
/ 09 февраля 2012

Я просматриваю некоторый код и увидел, что у производного класса есть свойство get:

{ get { return base.hwSystem as DerivedHardwareSystem; } }

, где DerivedHardwareSystem : HardwareSystem и hwSystem является членом HardwareSystem.

В чем разница между следующим?

{ get { return base.hwSystem as DerivedHardwareSystem; } }

и

{ get { return this.hwSystem as DerivedHardwareSystem; } }

Спасибо!

Ответы [ 4 ]

2 голосов
/ 09 февраля 2012

Если hwSystem переопределено, this.hwSystem будет использовать это переопределение, тогда как base.hwSystem будет игнорировать переопределение и использовать hwSystem, определенный в базовом классе.Если hwSystem не переопределено, между ними нет разницы.

0 голосов
/ 09 февраля 2012

Они обычно будут одинаковыми, если только производный класс не переопределяет свойство hwSystem, уже присутствующее в base. В этом случае this.hwSystem может быть совершенно другой вещью.

0 голосов
/ 09 февраля 2012

Если ваш подкласс имеет переопределенную или новую реализацию hwSystem, тогда this.hwSystem ссылается на версию в подклассе, а base.hwSystem ссылается на версию в базовом классе.

Если подкласс не переопределяет и не создает новую версию hwSystem, что вы и описываете, тогда base.hwSystem и this.hwSystem ссылаются на одну и ту же реализацию. Имейте в виду, что если кто-то добавит новую реализацию в будущем, вы окажетесь в ситуации, описанной выше.

0 голосов
/ 09 февраля 2012

Базовый класс и производный класс Вот объяснение того, что означает ключевое слово .Base. Я также добавлю ссылку на MSDN, которая объяснит еще больше

Используется ключевое слово baseдля доступа к членам базового класса из производного класса

Это ключевое слово относится к текущему экземпляру класса и также используется в качестве модификатора первого параметра метода расширения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...