• C# Linq中比较字符串使用 Equals 为什么报错


    今天同事问了我一个问题,像下面一样的代码为什么  s.BG_PriGroID 为null的时候报错

    objGroList = objGroList.Where(s => s.BG_PriGroID.Equals(pId)).ToList();

    虽然我一直没遇到这种错误,

    (因为我一直用的==,我不常用Equals比较字符串)

    但是我还是想知道为什么,然后我就找了一下微软的在线源码  https://referencesource.microsoft.com/

    查了一下String.Equals,发现实现是下面这个样子的

            public override bool Equals(Object obj) {
                if (this == null)                        //this is necessary to guard against reverse-pinvokes and
                    throw new NullReferenceException();  //other callers who do not use the callvirt instruction
     
                String str = obj as String;
                if (str == null)
                    return false;
     
                if (Object.ReferenceEquals(this, obj))
                    return true;
     
                if (this.Length != str.Length)
                    return false;
     
                return EqualsHelper(this, str);
            }

    原来.号前面的字符串是null的时候会抛出异常。

    自己写了一下例子试了一下

     的确是这样的

  • 相关阅读:
    MS-DOS命令
    寻找一条通过迷宫的路径
    linux文件基本操作和常用命令
    网络基础
    计算机基础---操作系统
    GIT 使用
    计算机基础
    秒角士网站
    咖啡项目
    winfrom面向对象1
  • 原文地址:https://www.cnblogs.com/wu-xin/p/13095544.html
Copyright © 2020-2023  润新知