2016-12-10 8 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

関連する問題