10

If I have a property that I want to let inheritors write to, but keep readonly externally, what is the preferred way to implement this? I usually go with something like this:

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

Is there a better way?

4

3 に答える 3

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

Or in C# 3.0

public object MyProp {get; protected set;}
于 2008-10-20T21:07:13.087 に答える
5

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

public object MyProp {get; protected set;}

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

private object _myProp;
public object MyProp
{
    get { return _myProp; }
    protected set { _myProp = value; }
}
于 2008-10-20T21:10:15.170 に答える
0

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

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

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

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

于 2008-10-20T21:10:08.633 に答える