实现对公众只读的属性,但对继承者可写的最佳方法是什么?
-
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; }
}
拥有一个setter和getter并不比在该可见性级别拥有变量更好。
因此,你可以让变量本身受到保护,读者也可以公开。
也就是说,制定者和吸气者是坏OO的指标 - 你确定你需要它们吗?你应该要求对象对其成员做一些事情,而不是让它的成员然后在对象之外操纵它们。
这是一个非常通用的规则,有很多例外。
不隶属于 StackOverflow