Константы, отмеченные const
, не могут, поскольку они подставляются компилятором во время компиляции.
Но обычные статические поля, присвоенные постоянным значениям, могут. У меня был такой случай только сейчас:
class Columns
{
public static int MaxFactCell = 7;
};
class Columns2 : Columns
{
static Columns2()
{
MaxFactCell = 13;
}
};
Если бы я просто переопределил поле MaxFactCell
в производном классе, полиморфизм не сработал бы: код, использующий Columns2
как Columns
, не увидел бы переопределяющее значение.
Если вам нужно ограничить доступ для записи (но не для чтения) к полю, использование readonly
запретит переопределять его в Columns2
. Вместо этого сделайте это свойством, это немного больше кода:
class Columns
{
static Columns()
{
MaxFactCell = 7;
}
public static int MaxFactCell {get; protected set;};
};
class Columns2 : Columns
{
static Columns2()
{
MaxFactCell = 13;
}
};