在 C# 中检查两个字符串的相等性时,string.Equals() 或 == 哪个更好?

Which one is better string.Equals() or == , in case of checking the equality of two strings in c#?

我有一个清单,要求我在检查两个字符串是否相等时使用 string.Equals()。据我所知, Equals() 和 == 在对字符串进行操作时会产生相同的结果。例如下图,

        string str1 = "Same String";
        string str2 = "Same String";

        Console.WriteLine(str1==str2);               //True
        Console.WriteLine(string.Equals(str1,str2)); //True

所以,我想知道这里哪个更好?它对性能有什么影响吗?

非常感谢!

.equals() 被认为是一种很好的做法,因为对于计算机来说,链式比较不如整数比较容易。

将对象引用与字符串进行比较时(即使对象引用引用字符串),忽略特定于字符串的 == 运算符的特殊行为 class。

通常(即不处理字符串时),Equals 比较值,而 == 比较对象引用。如果您正在比较的两个对象指的是一个对象的同一个实例,那么两者都将 return 为真,但如果一个对象具有相同的内容并且来自不同的来源(是具有相同数据的单独实例) ,只有等于 return 为真。但是,如评论中所述,字符串是一种特殊情况,因为它覆盖了 == 运算符,因此在处理纯粹的字符串引用(而不是对象引用)时,即使它们是单独的实例

我建议 string.Equals as equality(==) 运算符在内部使用 string.Equals 首先检查引用相等性然后检查值相等性,因此最好使用 string.Equals== 在字符串变量的情况下。