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