一般には読み取り専用であるが、継承者には書き込み可能なプロパティを実装する最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/219904

  •  03-07-2019
  •  | 
  •  

質問

継承者に書き込みを許可し、外部からは読み取り専用にしたいプロパティがある場合、これを実装する好ましい方法は何ですか?私は通常、次のようなものを使用します:

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
}
protected void SetMyProp(object value)
{
    m_myProp = value;
}

もっと良い方法はありますか?

役に立ちましたか?

解決

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
    protected set { m_myProp = value; }
}

またはC#3.0で

public object MyProp {get; protected set;}

他のヒント

これは間違いなく進むべき方法です。

public object MyProp {get; protected set;}

C#の古いバージョンを使用している場合、これが方法です。

private object _myProp;
public object MyProp
{
    get { return _myProp; }
    protected set { _myProp = value; }
}

セッターとゲッターを持っていることは、その可視性のレベルで変数を持っていることよりも優れています。

したがって、変数自体を保護し、リーダーを公開することができます。

そうは言っても、セッターとゲッターは悪いオブジェクト指向の指標です。本当に必要ですか?オブジェクトにメンバーを要求してからオブジェクトの外部で操作するのではなく、メンバーに何かをするようにオブジェクトに要求する必要があります。

これは非常に一般的なルールであり、多くの例外があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top