1
クラスAは抽象クラスであり、それを継承するクラスBが提供しなければならない読み取り専用プロパティを定義しているとします。抽象的またはセットで保護されたとして、このようなプロパティを定義するためのより良い習慣です:読み取り専用プロパティ継承:抽象的なまたはセット保護
public abstract class A
{
public abstract int Value { get; }
}
public class B : A
{
public override int Value { get { return 1; } }
}
OR
public abstract class A
{
public int Value { get; protected set; }
}
public class B : A
{
public B()
{
Value = 1;
}
}
私は最初のソリューションは、おそらく優れていると思いますが、私は他の意見を聞きたいと思います。
私はいくつかの良い点があり、誰も貢献していないので、あなたの答えを受け入れるでしょう。しかし、その間に私はソリューション1を使い終わった。ソリューション2を使って次のことを考えてみよう。第3クラスCはBから継承し、その値を公開したい。また、値は定数ではなく、BとCの両方の多くのメソッドから設定されます。Cが提供するものではなくメソッドの1つを実行している間にBがその値を提供することがあります。つまり、Cはそのプロパティを正しくオーバーライドしていません。だから私は、解決策1は一般に適切であると結論づけました。 – Zmaster