public class ClassA
{
public static readonly string processName;
}
public class ClassB : ClassA
{
static ClassB()
{
processName = "MyProcess.exe";
}
}
Я получаю сообщение об ошибке при компиляции вышеуказанного кода C #.
Ошибка говорит - «Статическое поле только для чтения не может быть назначено (кроме как в статическом конструкторе или инициализаторе переменной)»
Но я назначаю его в статическом конструкторе.
Необходимость такой статической переменной заключается в том, что базовый класс имеет методы, которые используют эту переменную, но производные классы и базовый класс должны иметь разные значения для этой переменной. Но значение является постоянным для всех экземпляров соответствующего класса. Оно должно быть доступно только для чтения, потому что оно нигде не должно изменяться.
В чем ошибка в приведенном выше коде? (Если таковые имеются), кажется, я не могу их обнаружить. Сообщение об ошибке не помогает. Поскольку я не делаю ничего плохого согласно этому.
Если есть ошибка, как я могу реализовать эту функцию? Я знаю простой обходной путь - сделать его переменной экземпляра и назначить им разные значения в производных классах. Но в этом нет необходимости, поскольку значение является постоянным для всех экземпляров соответствующего класса.