У меня есть класс с большим количеством переменных c только для чтения, которые будут сохранены в файле конфигурации после того, как он заработает. Среди них у меня есть значение размера шрифта по умолчанию и довольно много других переменных, которые ссылаются на этот размер шрифта по умолчанию. Одна и только одна из этих переменных возвращает 0, а не значение размера шрифта по умолчанию.
У меня аналогичная проблема с моими переменными FontName, но для краткости они исключены из примера кода.
Соответствующий код приведен ниже в том порядке, в котором он отображается в моем классе. Я попытался переместить объявление размера шрифта по умолчанию сразу над объявлением размера шрифта основного текста; это привело к тому, что все переменные вернули 0, а не размер шрифта по умолчанию. Возврат объявления в исходное положение заставил другие переменные снова начать работать.
Я также попытался изменить varaiable на свойство stati c с помощью только геттера. Это свойство возвращает размер шрифта по умолчанию, как и ожидалось.
Я дважды проверил, что все перечисленные ниже объявления существуют в одной и той же области.
И, конечно же, я сделал полное решение, чистое и перестроенное без изменения поведения.
Также обратите внимание, что переменные не генерируют исключения: они просто возвращают 0.
//private static float _BodyFontSize { get => _DefaultFontSize; } //returns 9
private static readonly float _BodyFontSize = _DefaultFontSize; //returns 0
...
private void MyMethod()
{
//where my breakpoint is at
...
}
...
private static readonly float _DefaultFontSize = 9;
...
private static readonly float _DetailsFontSize = _DefaultFontSize; //returns 9
...
private static readonly float _AddressFontSize = _DefaultFontSize; //returns 9
...
private void AnotherMethod()
{
...
}
...
private static readonly float _BlurbFontSize = _DefaultFontSize; //returns 9