我目前有以下代碼模式,我在一般類MyClass的構造函數中初始化MyThing類型的特定對象。但是,在某些特定的派生類例子中(例如MySpecialClass),我想使用MyThing的派生版本,我稱之爲MySpecialThing。在基類構造函數中構造對象?
public class MyClass
{
public MyClass()
{
this.MyThing = new MyThing();
}
public MyThing MyThing { get; set; }
}
public class MySpecialClass : MyClass
{
public MySpecialClass()
{
this.MyThing = new MySpecialThing();
}
}
我的問題是,這是否是不好的做法,因爲效果MyThing屬性被在派生類中初始化兩次,一次是在基類和一次。很顯然,我可以傳遞一個布爾基類的構造函數或東西來告訴它不要打擾初始化MyThing,但可能是矯枉過正...
您甚至可以委託基類中的默認構造函數:public MyClass():this(new MyThing() ){}',但這只是一個意見問題:)總體而言,+1。 – 2013-04-09 10:01:53
好點,我會調整代碼。 – 2013-04-09 10:02:59
很好的答案,謝謝。關於使其只讀的好主意。我通常是隻讀變量的粉絲,它只是令人討厭,沒有類似於{get;組; }表示只讀屬性和字段的表示法。 – 2013-04-09 10:14:02