?很容易忽略的细节
class Test
{
public int Count;
}
Test t1 = null;
Console.WriteLine(t1?.Count >= 0);
Console.WriteLine(t1?.Count < 0);
Console.WriteLine(t1?.Count != null);
Console.WriteLine(t1?.Count == null);
这种情况下 打印出结果:False,False,False,True
我们想要 t1 的变量 Count 跟数字 0 进行比较,在 t1 不是 null 的情况,确实得到了我们想要的结果,但是在 t1 是 null 的情况下就会出现问题,以上写法不会报错,与 0 比较并输出False, 是因为把 0 隐形转换成对象object类型作比较了
如果是要与数字 0 作比较 使用以下写法
if (t1?.Count ?? 0 >=0)
//block