问号运算符不使用计数

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 。因此,将使用值检查值。


以上是问号运算符不使用计数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>