比方說,我有一個抽象基類:正確使用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