この構成を使用すると、次のようになります。
var dict = new Dictionary<int, string>();
var result = (dict?.TryGetValue(1, out var value) ?? false) ? value : "Default";
CS0165 use of unassigned local variable 'value'
期待したものではないというエラーが表示されます。どうすれvalue
ば未定義になる可能性がありますか? 辞書が null の場合、内側のステートメントが返さfalse
れ、外側のステートメントが false と評価され、 が返されDefault
ます。
ここで何が欠けていますか?コンパイラがステートメントを完全に評価できないだけですか?それとも私はどういうわけかそれを台無しにしましたか?