【发布时间】:2013-05-11 15:46:43
【问题描述】:
嗯,最初我在每个派生类中有几个具有不同值的常量(如 MAX_SPEED)。这个想法是在基类的某些方法中使用这些值。那时我意识到我不能用常量做到这一点,所以我创建了只读属性。
我需要一种在实例化时将这些值分配给私有字段的方法,最好是在基类中。但首先我必须评估派生类中的原始值。由于这些是属性,我在定义时找不到初始化它们的方法,所以唯一的方法是在派生构造函数中。
这就是问题所在:值在分配给基类中的私有字段后被初始化。我逃脱的解决方案是创建一个虚拟方法并在那里进行分配。
有没有办法从派生类调用基构造函数,以便首先调用来自派生构造函数的代码?
class BaseClass
{
public BaseClass()
{
System.Console.WriteLine("This should be shown after");
}
}
class DerivedClass : BaseClass
{
public DerivedClass() : base()
{
System.Console.WriteLine("This should be shown first");
}
}
当然,在示例中它会以相反的方式工作。有解决办法吗?
【问题讨论】:
-
没有。您必须先调用基本构造函数,否则会出现错误。顺便说一句,你为什么要这个?
-
我在对 Jon 的回答的评论中描述了这种情况。我想我应该在问题中说清楚。
标签: c# inheritance constructor