2016-12-10 10 views
1

Я понимаю, что когда я создаю стенографическое свойство в C#, это переводится в поле, созданное для него, когда оно скомпилировано.Переопределение стенографических свойств в C#

class Hello { 
    public bool Hi { set ; get ; } 
} 

Мой вопрос: что произойдет, если сокращённое свойство является виртуальным, а затем переопределены:

class Hello { 
    virtual public bool Hi { set ; get ; } 
} 

//The class and the property can't have the same name 
//class Hi : Hello { 
class Bonjour : Hello { 
    override public bool Hi { 
    set { } 
    get { return true ; } 
    } 
} 

Я переопределении виртуальной собственности полностью. Будет ли это генерировать поле при компиляции класса Hi, с которым я больше не смогу получить доступ?

спасибо.

ответ

2

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

Если вы хотите получить доступ к базовому полю из класса Bonjour, вы можете обратиться к базовому свойству через base.Hi.

Если вы никогда не предназначались для Hello класса, который будет использоваться сам по себе, в первую очередь, сделать класс и свойство abstract. Тогда никакое поле не будет создано.

Here's an example Что происходит, когда вы скомпилируете и затем декомпилируете оба случая.

+0

Я считаю, что это правда. –

+0

@Tony Я добавил ссылку, которая показывает, что это определенно верно :) –

+0

Спасибо, что указали на проблему с моим примером – edincanada