Наследование readonly поля - C#
Формулировка задачи:
Здравствуй, киберфорум. Изучаю C# и .NET с помощью книги Эндрю Троеллсена. Дошёл до полей, доступных только для чтения, и решил попробовать создать дочерний класс от базового, содержащего данное поле. В коде будет понятнее, я думаю. Это базовый класс, тут всё прекрасно и работает. Далее наследую :
И тут вылезает ошибка: Ошибка CS0191 Присваивание значений доступному только для чтения полю допускается только в конструкторе и в инициализаторе переменных.
Что я делаю не так? Ошибку в MSDN гуглил, там ничего про наследование не говорится, а в базовом классе у меня и так работает всё. Здесь же не позволяет в конструкторе перезаписать, хотя по описанию ошибки именно тут должно быть всё сделано, именно в конструкторе. Пробовал добавить this.maxSpeed, результата нет. Не может же readonly как-то иначе наследоваться. Для теста попробовал вызвать следующий код:
вывод гласит: машина едет 50, максимальная скорость машины 180, максимальная скорость вана 35, скорость вана 20.
Из полученного делаю вывод, что поле readonly нормально присвоилось в соответствующем конструкторе базового класса и стало равно 180, а вот наследовалось в miniWan с значением 35, которое описано в стандартном конструкторе базового класса. Как, почему, зачем именно оттуда, и как же всё таки в итоге в miniWan мне переопределить значение для данного поля?
class Car
{
public readonly int maxSpeed;
private int currSpeed;
public Car(int max)
{
maxSpeed = max;
}
public Car()
{
maxSpeed = 35;
}
//дальше другие методы, свойства класса class MiniWan : Car
{
public MiniWan()
{
maxSpeed = 35;
Speed = 40;
}
} Car myCar = new Car(180);
myCar.Speed = 50;
Console.WriteLine("My car is going {0}", myCar.Speed);
Console.WriteLine("What is max speed of my car? {0}", myCar.maxSpeed);
MiniWan myWan = new MiniWan();
myWan.Speed = 20;
Console.WriteLine("What is max speed of my wan? {0}", myWan.maxSpeed);
Console.WriteLine("Speed of my wan is {0}", myWan.Speed);Решение задачи: «Наследование readonly поля»
textual
Листинг программы
class deluxeMiniWan : MiniWan
{
public deluxeMiniWan() :base (220,80)
{
}
}