2017-06-27 13 views
1

はこの短い例を考えてみましょうそれを設定することができますMain()に設定します。これはなぜ可能ですか?は、Get-専用に取得/設定プロパティをオーバーライドするまだあなたが

+0

これを上書きしないで、 'new 'とマークしてください。 –

+0

@MohamedAhmedそれでも、プロパティ値を設定する機能は削除されません。 – Servy

+0

彼は 'GetOnlyProperty'型の現在の' example'オブジェクトではできません –

答えて

1

、それはあなたが派生クラスで読み取り専用にmakkingことにより、getterメソッドをオーバーライドしていることが判明:

public override bool Property => property; 

しかし、あなたが設定したときに、まだそう、セッターを継承しますプロパティでは、基本クラスのsetterメソッドにはまだアクセスできます。

1

言語では、ここで達成しようとしていることを実行することはできません。 Liskov Substitution Principleでは、派生クラスを基底クラスが期待される場所に置き換える必要があります。そのプロパティを保持するには、基本クラスインタフェースのアクセス可能なすべてのメンバーが存在し、派生クラスでアクセス可能でなければなりません。生成されたCILコードを見ることによって

+1

コンパイラはなぜ警告やエラーを出さないのですか?おそらく監督ですか? –

+0

@DomnWerner - あなたが選んだ構文では、セッターメソッドをオーバーライドしようとは完全にはっきりしていませんが。 – hoodaticus

+1

私はゲッターだけをオーバーライドしていると言っていますか?私が財産そのものを上書きしていたことは私の理解であった。 –

関連する問題