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

时间:2018-04-17 14:34:56

标签: c# linq

我有以下代码:

if (Model.Products?.Cards?.Any())
{
}

如果我尝试这样做会引发错误:

  

无法转换bool? bool

搜索了这个,我不知道为什么会抛出错误,因为它可以让我这么做

if (Model.Products?.Cards?.Count > 0)
{
}

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

1 个答案:

答案 0 :(得分:13)

仅仅因为它有效,所以大于Nullable<int>int

if (null > 0)
{
}

null在此处被视为Nullable<int>,将Nullable<int>int进行比较是可以的。 (必读:How does comparison operator works with null int?

但不是if (null)if语句需要布尔值。

所需的解决方法可能是:

if (Model.Products?.Cards?.Any() ?? false)
{ }