如何为抽象类中的只读字段赋值?

OnT*_*Fly 5 c# class abstract

我在基础抽象类中有一个字段.我想让这个字段只读,以便在初始化子类后它的值不会改变.

但是抽象类不能有构造函数,而readonly只能从构造函数初始化.

怎么做到这一点?

Jul*_*ian 10

例如,您可以从子类构造函数中调用基类的构造函数,如下所示:

基类中的只读字段和构造函数:

public readonly int MyInt;

protected TheBaseClass(int myInt)
{
    this.MyInt = myInt;
}
Run Code Online (Sandbox Code Playgroud)

儿童班的建设者:

public TheChildClass() : base(42)
{
}

public TheChildClass(int i) : base(i)
{
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*tad 5

abstractclass 可以有构造函数.

public abstract class MyAbstract
{

    protected readonly string SomeField;

    public MyAbstract()
    {
        SomeField = "Some";
    }
}

public abstract class MyInheited
{


    public MyInheited(): base()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我是你,我会让该字段不是只读保护字段,而是将其公开公共只读属性