Я пытаюсь поиграться с оператором ?: при присвоении значения в логическую переменную, допускающую значение NULL.
Это оригинальный код, который отлично работает
bool? result;
var condition = 3;
if (condition == 1)
result = true;
else if (condition == 2)
result = false;
else result = null;
После того, как я изменил код, он обнаружил ошибку, и я исправляю ее после поиска в Интернете
// before (error occur)
result = condition == 1 ? true : (condition == 2 ? false : null);
// after (fixed error)
result = condition == 1 ? true : (condition == 2 ? false : (bool?)null);
// *or
result = condition == 1 ? true : (condition == 2 ? (bool?)false : null);
Я понимаю, что оба выражения должны быть одного типа, но почему это толькотребуется преобразовать одно выражение, но не все выражение? , что меня смущает.
из моего понимания bool and bool?
или bool? and null
следует по-прежнему считать не того же типа, но оно работает вСитуация.
Любой совет по этому вопросу будет оценен.Спасибо.