例如,我有几个在每个派生类中具有不同值的常量。我想在基类的方法中使用这些值(比如在构造函数中初始化一些非静态字段)。我可以将用于初始化的相同代码复制粘贴到所有构造函数,但我仍然想知道是否有更好的解决方案。
我知道我不能像这里讨论的那样覆盖字段。如果我想访问在派生类中初始化的基类中的字段,则解决方案是改用属性。但是如果我想覆盖静态/常量字段(我相信我不能创建静态/常量属性)怎么办?
我试图使示例尽可能简单:
class BaseClass
{
protected int currentSteps;
}
class ChildClass1 : BaseClass
{
public const int MAX_STEPS = 5;
public ChildClass1()
{
currentSteps = MAX_STEPS;
}
}
class ChildClass2 : BaseClass
{
public const int MAX_STEPS = 10;
public ChildClass2()
{
currentSteps = MAX_STEPS;
}
}
如果我可以将它重写为这样的东西,这样就不会重复相同的代码,这对我来说是理想的,但它不会像前面提到的那样工作:
class BaseClass
{
public const int MAX_STEPS = 0;
protected int currentSteps;
public BaseClass()
{
currentSteps = MAX_STEPS;
}
}
class ChildClass1 : BaseClass
{
public const int MAX_STEPS = 5;
public ChildClass1() : base() { }
}
class ChildClass2 : BaseClass
{
public const int MAX_STEPS = 10;
public ChildClass2() : base() { }
}
是否有另一种选择来执行此操作,而不必将初始化代码复制到所有派生构造函数?(我是真正的程序,我有很多派生类和很多常量)