记录一个两年前发生的一个问题

事情是这个样子的,两年前工作中我写下了如下的代码

//此处是从服务器获取一个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。此处很明显就会报空指针异常了。

当然这是有些极少数的老的编译器才会这么干,现如今的编译器两种写法都没问题。

谨以此片文章记录这个不算错误的错误。

posted @ 2020-11-15 00:27  雨听前窗  阅读(96)  评论(0)    收藏  举报