问号运算符不使用计数
c#
以下是我的空运算符检查
if (vessels?.Vessels?.Count == 0)
{ }
和对象在下面
private static readonly DataQueueItem _emptyVessel = new DataQueueItem()
{
VesselId = 1,
Vessels = null
};
它在 else 部分,但它应该在 if 块中。我很困惑为什么会这样。任何帮助
回答
请将您的代码更改为 =>
if ((vessels?.Vessels?.Count ?? 0) == 0)
{
// do something.
}
说明: Asvessels
可以为 null 或vessels.Vessels
可以为 null 所以,vessels?.Vessels?.Count
将返回(int?)
类型。同时,在问题中的if
条件if (vessels?.Vessels?.Count == 0)
中,我们正在尝试检查 (int?)==(int)。这可能不会像您预期的那样工作。我们不能检查null
一个值。这就是为什么我添加了(vessels?.Vessels?.Count ?? 0)
. 如果vessels?.Vessels?.Count
为空,那部分将返回 0 。因此,将使用值检查值。