今天在开发过程中遇到关于if判断的问题
先看代码
if(listA!=null && listA.Count!=0 && listB != null?(listB[0]+listA[0])>0:false)
{
//logic
}
乍一看,如果listA不为null,并且listA的Count不为0,在listB不为null的前提下应该返回listB[0]+listA[0]的结果是否大于0结果
但是!结果不是,如果listA为null那么这段代码会抛异常【未将对象引用到新实例】,正常如果listA为null那么应该不做后面的判断,但是为什么这段代码会抛异常?
废话少说
原因是运算符的优先级,这段代码的优先级可以这样理解if((listA!=null && listA.Count!=0 && listB != null)?(listB[0]+listA[0])>0:false),因为&&的优先级高于三元表达式所以在这段代码会出现以上的报错
解决方案:
在开发过程中如果涉及到运算符优先级的情况可以使用加括号的方式来规避这类的问题,代码如下
if(listA!=null && listA.Count!=0 && (listB != null?(listB[0]+listA[0])>0:false))
{
//logic
}
这样就可以达到想要的效果了
最后附上运算符优先级作为参考
标签:Count,优先级,遇到,过程,开发,&&,null,listA,listB From: https://www.cnblogs.com/PythonTaurus/p/17095320.html