猿问

字符串 NULL 总是等于 C# 中的另一个字符串 NULL 吗?

在我的 VS 2015 编译器上,我测试了


    static void Main(string[] args)

    {

        string str1 = null;

        string str2 = null;

        if(str1==str2)  //they are the same on my machine

        {

        }

    }

但这是记录在案的行为吗?NULL根据定义,是一种未定义的行为,因此与NULL另一个比较NULL 可能是未定义的。可能会发生在我的机器上,使用我当前的 .Net 框架,这两个NULL结果是相同的。但在未来,他们可能不再一样了。


在这种情况下,我的代码将无声地中断。


始终假设上述两个NULL字符串始终相同是否安全?


慕工程0101907
浏览 261回答 2
2回答

慕尼黑8549860

是的,这里有记录如果 a 和 b 都为 null,则该方法返回 true。当您使用此方法使用==,这是提到在这里。调用静态Equals(String, String)方法

月关宝盒

如果两个字符串都为 null,则该方法始终返回 true,因为==用于引用比较。简单来说,== 检查两个对象是否指向相同的内存位置。我用 java 尝试了这个例子,str1.Equals(str2)它返回Null Pointer Exception,因为 .Equals 评估对象中值的比较。希望对你有帮助。
随时随地看视频慕课网APP
我要回答