如果我有一个我希望让继承者写入的属性,但只能在外部保持读取,那么实现它的首选方法是什么?我通常会这样做:

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; }
}

拥有一个setter和getter并不比在该可见性级别拥有变量更好。

因此,你可以让变量本身受到保护,读者也可以公开。

也就是说,制定者和吸气者是坏OO的指标 - 你确定你需要它们吗?你应该要求对象对其成员做一些事情,而不是让它的成员然后在对象之外操纵它们。

这是一个非常通用的规则,有很多例外。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top