我在下面的代码中遇到了一个奇怪的问题。尽管 Resharper 突出显示了代码段 (autorefresh == null) ,但它编译得很好,通知我表达式总是假的

bool? autorefresh = Properties.Settings.Default.autorefresh;
autorefresh = (autorefresh == null) ? false : autorefresh;
Enabled = (bool)autorefresh;

任何想法如何更好地解决这个问题?

编辑 07/02/2012 16:52

Properties.Settings.Default.autorefresh

以上是 bool ,而不是 string

最佳答案

我想你想要的是:

Enabled = Properties.Settings.Default.autorefresh ?? false;

根据您的评论,您似乎不必要地将 autorefresh 的值分配给 Nullable<bool> 。在保护数据方面,如果该类型无效或丢失, Settings 将返回该类型的默认值(对于 false 将是 boolean )。因此,您的代码应该是:
Enabled = Properties.Settings.Default.autorefresh;

关于c# - 在 C# 中查询 Nullable bool,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9179064/

10-13 06:23