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

时间:2011-03-24 14:12:21

标签: c# class abstract

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

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

如何实现这一目标?

3 个答案:

答案 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有一个构造函数,它们根本无法启动。