如果我有一个我想让继承者写入的属性,但在外部保持只读,那么实现它的首选方法是什么?我通常会这样:
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 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 并不比拥有一个可见性级别的变量更好。
因此,您可以只使变量本身受保护并将阅读器公开。
也就是说,setter 和 getter 是糟糕的 OO 的一个指标——你确定你需要它们吗?您应该要求对象对其成员做某事,而不是要求它为其成员然后在对象之外操作它们。
这是一个非常普遍的规则,也有很多例外。