子类构造函数不能分配给readonly变量里面

时间:2015-03-23 16:11:37

标签: c# asp.net

我有这个父类:

public class ParentSchedule
{
    protected readonly int[] numbersArray;
    public ParentSchedule()
    {
        numbersArray = new int[48];
        //code
    }
}

然后我有这个孩子班:

public class ChildSchedule: ParentSchedule
{
    public ChildSchedule()
    {
        numbersArray = new int[24]; //compile time error here
        //code
     }
}

但是,在子类中,我有这个错误:

  

无法分配readonly字段(构造函数或变量初始化程序除外)

我尝试添加关键字base

public ChildSchedule() : base()

但我仍然遇到同样的错误。有没有办法让我从子类写入readonly字段?

1 个答案:

答案 0 :(得分:5)

  

我有没有办法从子类写入readonly字段?

没有。 readonly字段只能在声明它的类型的构造函数中分配

也许您应该在基类中创建一个受保护的构造函数,其中包含要赋值给变量的值:

protected readonly int[] numbersArray;

public ParentSchedule() : this(new int[48])
{
}

protected ParentSchedule(int[] numbersArray)
{
    this.numbersArray = numbersArray;
}

Then I have this child class:

public class ChildSchedule: ParentSchedule
{
    public ChildSchedule() : base(new int[24])
    {
    }
}

请注意,问题不在于访问变量(根据您的标题) - 它是为变量分配