我有以下代码:
if (Model.Products?.Cards?.Any())
{
}
如果我尝试这样做会引发错误:
无法转换bool? bool
搜索了这个,我不知道为什么会抛出错误,因为它可以让我这么做
if (Model.Products?.Cards?.Count > 0)
{
}
为什么我在这种情况下无法使用.Any()
- 为什么它被归类为可空的bool但计数不是可以为空的int?
答案 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)
{ }