我在基础抽象类中有一个字段。我想让这个字段只读,以便在初始化子类后它的值不会改变。
但是抽象类不能有构造函数,readonly只能从构造函数初始化。
如何实现这一目标?
答案 0 :(得分:10)
例如,您可以从子类构造函数中调用基类的构造函数,如下所示:
基类中的只读字段和构造函数:
public readonly int MyInt;
protected TheBaseClass(int myInt)
{
this.MyInt = myInt;
}
子类中的构造函数:
public TheChildClass() : base(42)
{
}
public TheChildClass(int i) : base(i)
{
}
答案 1 :(得分:5)
abstract
类可以拥有构造函数。
public abstract class MyAbstract
{
protected readonly string SomeField;
public MyAbstract()
{
SomeField = "Some";
}
}
public abstract class MyInheited
{
public MyInheited(): base()
{
}
}
如果我是你,我会将字段不是只读保护字段,但将其公开为公共只读属性
答案 2 :(得分:2)
抽象类CAN有一个构造函数,它们根本无法启动。