我正在尝试将一个object
转换为bool
类型,并且想要转换bool
和Nullable<bool>
类型。我还想确保在可能的情况下进行适当的转换。所以我有以下代码:
if (value is bool)
{
boolValue = (bool) value;
}
else if (value is bool? && ((bool?)value).HasValue)
{
boolValue = ((bool?) value).Value;
}
else
{
throw new ArgumentException("Value must be a boolean type");
}
ReSharper 2016告诉我,在这一堆if语句中,
value is bool?
将永远评估为false。为什么呢?这意味着Nullable<bool>
没有继承自object
(不可能),或者value is bool
会捕获一个bool?
。ReSharper 2016也有可能存在错误;我发现
System.Windows.Controls.BooleanToVisibilityConverter.Convert
的实现几乎完全相同。我怀疑WPF核心不会有这样的错误,这让我认为这是ReSharper的问题。