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