Мой коллега только что столкнулся с интересной проблемой. Я воссоздал проблему с простым примером кода ниже. Проблема в том, что компилятор жалуется на то, что i
возможно, не назначен, когда он используется в третьей строке.
Я знаю, что GetProperty
не будет выполняться, если o
равно null
, и i
не буду инициализирован, но в этом случае я бы также не оценивал int i2 = i;
, Есть ли что-то в опциях или пустом объединяющем операторе, я не знаю, что здесь уместно, или это просто тот случай, когда компилятор не достаточно умен, чтобы знать, что i
не используется, если он не инициализирован?
void Test(object o) {
if (o?.GetProperty("Blah", out int i) ?? false) {
int i2 = i;
}
}