誰かが 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 への明示的な変換を必要とするのはなぜですか。