我目前有以下代码模式,我在一般类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