在C#中,字符串NULL是否总是等于另一个字符串NULL?

时间:2018-07-31 08:28:44

标签: c# string

在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字符串始终相同是否安全?

2 个答案:

答案 0 :(得分:14)

是的,已记录为here

  

如果a和b均为null,则该方法返回true。

,并且在您使用here==时使用此方法。

  

调用静态Equals(String, String)方法

答案 1 :(得分:2)

如果两个字符串都为null,则该方法始终返回true,因为 == 用于参考比较。简而言之,==检查两个对象是否指向相同的内存位置。

我使用Java str1.Equals(str2)尝试了该示例,并返回 Null Pointer Exception ,因为.Equals评估对象中值的比较。

希望它对您有帮助。