比方说,我有一个抽象基类:正确使用C#“新”改性剂,使受保护的财产公开
public abstract class BaseClass
{
private MyObject myObject;
protected MyObject PropA
{
get
{
if(myObject == null) this.myObject = new MyObject();
return this.myObject;
}
}
}
...这在我的派生类之一,我想使保护基类属性PropA
公众。在这种情况下使用new
modifier是否正确?
public class DerivedClass : BaseClass
{
public new MyObject PropA
{
get
{
return base.PropA;
}
}
}
这并非非常错误。为什么你不能在基类中公开它是很难猜测的。也许只有一个BaseClass引用的客户端程序员会陷入麻烦。 – 2014-11-01 22:24:14
那么,它的技术上是正确的,但乍一看,它似乎是一个可疑的设计。为什么'PropA'保护如果它可以在某些派生类中公开?为什么不开始公开?是什么让公共'PropA'成为其他派生类中糟糕的设计? – InBetween 2014-11-01 23:01:19