Объясните это через:
bool? autorefresh = Properties.Settings.Default.autorefresh;
// ^^^ this is a non-nullable Boolean
Properties.Settings.Default.autorefresh
не может быть обнулено, поэтому оно будет либо истинным, либо ложным.
Следовательно, обнуляемый локальный autorefresh
также будет либоистина или ложь, поскольку оно инициализируется значением, которое является истинным или ложным.
autorefresh = (autorefresh == null) ? false : autorefresh;
// ^^^^ therefore this test will never succeed
Следовательно, это эквивалентно:
autorefresh = autorefresh;
, что, очевидно, бессмысленно.(И, как уже указывали другие, autorefresh ?? false
- лучший способ написать этот код в любом случае.)
Вопрос в том, почему у вас локальная переменная вообще?Почему бы просто не сказать:
Enabled = Properties.Settings.Default.autorefresh;
?