2

誰かが if ステートメントの null 条件演算子のロジックを説明できますか?

次のコードを想像してください

List<string> items = null;
if (items?.Count == 0)
{
    Console.WriteLine("error");
}
else
{
    Console.WriteLine("OK");
}

上記で印刷OKです。次のブロックがコンパイルされないのに、なぜコンパイルされるのですか?

if (items?.Any())    // won't compile but if (items?.Count() == 0) would
{
    ...
}

私は推測していますか?null が検出された場合は実行が停止し、if 全体がスキップされますが、「?.Any()」ではそうでないのはなぜですか? 「カウント」がプロパティであるのに対し、それはメソッドだからですか?

また、Linq 拡張メソッド Any() が Nullable から bool への明示的な変換を必要とするのはなぜですか。

4

2 に答える 2