使用==或Equals进行字符串比较

sti*_*k81 10 .net c# string string-comparison

在某些语言(例如C++)中,您不能使用==等运算符进行字符串比较,因为它会比较字符串对象的地址,而不是字符串本身.但是,在C#中,您可以使用==来比较字符串,它实际上会比较字符串的内容.但是还有字符串函数来处理这种比较,所以我的问题是; 你应该?

鉴于两个字符串:

string aa = "aa"; 
string bb = "bb";
Run Code Online (Sandbox Code Playgroud)

你应该像这样比较它们:

bool areEqual = (aa == bb); 
Run Code Online (Sandbox Code Playgroud)

或者你应该使用Equal函数,如下所示:

bool areEqual = aa.Equals(bb); 
Run Code Online (Sandbox Code Playgroud)

反正有技术差异吗?或者最佳实践的合理论据?

Han*_*ant 24

这是运营商的实施:

    public static bool operator == (String a, String b) {
       return String.Equals(a, b);
    }
Run Code Online (Sandbox Code Playgroud)

不要为此失眠.


Mar*_*ell 23

我不会用:

aa.Equals(bb)
Run Code Online (Sandbox Code Playgroud)

除非我知道 aa不能可能为空.我可能会用:

string.Equals(aa,bb)
Run Code Online (Sandbox Code Playgroud)

但我主要使用它我想使用其中一种特定StringComparison模式(不变量,序数,不区分大小写等).虽然我也可以使用这些StringComparer实现,因为它们更容易抽象(例如,传递给一个Dictionary<string, Foo>不区分大小写的序数字典).对于一般用途,

a == b
Run Code Online (Sandbox Code Playgroud)

很好.