有人可以解释一下 if 语句中空条件运算符的逻辑吗?
想象下面的代码
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()”不是这种情况?仅仅因为它是一种方法,而“count”是一个属性?
为什么 Linq 扩展方法 Any() 需要从 Nullable 到 bool 的显式转换,其中 Count() == 0 编译时不需要 Nullable 到 int 的转换?