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


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

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

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

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

  • 相关阅读:
    8-JS闭包、回调实例
    7-闭包、回调
    6-JS函数(二)
    5-JS函数
    4-JS对象
    3-WebPack
    2-Babel
    1-NPM
    25-React事件处理及条件渲染
    java初始化笔记
  • 原文地址:https://www.cnblogs.com/Schme/p/13975401.html
Copyright © 2020-2023  润新知