我有这个父类:
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
字段?
答案 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])
{
}
}
请注意,问题不在于访问变量(根据您的标题) - 它是为变量分配。