事情是这个样子的,两年前工作中我写下了如下的代码
//此处是从服务器获取一个List
List<string> list=new List<string>();
if (list != null || list.Count > 0)
{
//做了一些事情
}
本来我认为这个是很正确的写法,但是一个同事当场质疑我说不能这么写,我当时是满脑袋问好????
不能这么写?我从学C#的时候我就一直这么写,从没见过出问题。直到他们给我解释了原因我才知道咋回事。
具体应该这样写
//此处是从服务器获取一个List List<string> list = new List<string>(); if (list != null) { if (list.Count > 0) { //做了一些事情 } }
原来,有一部分老的编译器会执行检查list==null后仍然会执行||后边的代码,也就是当list==null的时候仍然会执行list.Count>0。此处很明显就会报空指针异常了。
当然这是有些极少数的老的编译器才会这么干,现如今的编译器两种写法都没问题。
谨以此片文章记录这个不算错误的错误。