Я пытаюсь преобразовать object
в тип bool
и хочу преобразовать bool
и Nullable<bool>
. Я также хочу убедиться, что я делаю соответствующие броски, где это возможно. Поэтому у меня есть следующий код:C# - оператор с нулевыми типами всегда ложный в соответствии с ReSharper
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 сообщает мне, что value is bool?
всегда будет оценивать ложь в этой стопке, если заявления. Почему это? Это означало бы, что Nullable<bool>
не наследует от object
(невозможно) или что value is bool
захватит bool?
.
Возможно также, что ReSharper 2016 имеет ошибку; Я вижу, что реализация System.Windows.Controls.BooleanToVisibilityConverter.Convert
в значительной степени идентична. Я сомневаюсь, что в ядре WPF была бы такая ошибка, и я подумал, что это проблема с ReSharper.