为什么?.Any()被归类为可以犯罪的布尔?

Pet*_*ete 7 c# linq

我有以下代码:

if (Model.Products?.Cards?.Any())
{
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试这个它会抛出一个错误:

不能转换bool?布尔

搜索到这个之后,我不确定为什么会抛出错误,因为它允许我这样做

if (Model.Products?.Cards?.Count > 0)
{
}
Run Code Online (Sandbox Code Playgroud)

为什么我不能.Any()在这种情况下使用- 为什么它被归类为可空的bool但计数不是可以为空的int?

Pat*_*man 13

仅仅因为它是有效的,所以比a Nullable<int>int:

if (null > 0)
{
}
Run Code Online (Sandbox Code Playgroud)

null被认为是Nullable<int>在这里,Nullable<int>与之比较int是可以的.(必读:比较运算符如何与null int一起使用?)

但不是if (null).一个if语句需要布尔值.

所需的解决方法可能是:

if (Model.Products?.Cards?.Any() ?? false)
{ }
Run Code Online (Sandbox Code Playgroud)