‘==’vs string.equals c#.net

可能重复:
C#:String.Equals vs. ==

大家好。

有段时间有人告诉我你不应该将字符串与==进行比较,并且你应该使用string.equals(),但它指的是java。

¿.NET c#中的差异beteen ==和string.equals是什么?

string == stringString.Equals完全相同。 这是确切的代码(来自Reflector):

 public static bool operator ==(string a, string b) { return Equals(a, b); // Is String.Equals as this method is inside String } 

在C#中没有区别,因为运算符==!=已经在字符串类型中重载以调用equals() 。 请参阅此MSDN页面 。

==实际上最终会在字符串上执行String.Equals。

使用String.Equals时可以指定StringComparision ….

例:

 MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase) 

大多数情况下,我认为它是编码偏好。 使用您喜欢的任何一种。

在这里查看更好的描述。 正如一个答案所说

当==用于对象类型时,它将解析为System.Object.ReferenceEquals。

Equals只是一个虚方法,并且行为如此,因此将使用被覆盖的版本(对于字符串类型,它将比较内容)。

==运算符调用String.Equals方法。 所以最多你要保存一个方法调用。 反编译代码:

 public static bool operator ==(string a, string b) { return string.Equals(a, b); } 

没有区别,它只是一个操作员超载。 对于字符串,它在内部是相同的。 但是,你不想养成使用==来比较对象的习惯,这就是为什么不建议将它用于字符串的原因。

在C#中,字符串没有区别。

如果你不关心字符串的情况而不担心文化意识,那么它就是一样的……