7

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

大家好。

有时有人告诉我,你永远不应该用 == 比较字符串,你应该使用 string.equals(),但它指的是 java.util.equals()。

¿ .NET c# 中 == 和 string.equals 的区别是什么?

4

8 回答 8

19

string == string完全一样String.Equals。这是确切的代码(来自 Reflector):

public static bool operator ==(string a, string b)
{
    return Equals(a, b); // Is String.Equals as this method is inside String
}
于 2011-04-26T20:43:39.277 回答
3

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

于 2011-04-26T20:40:40.647 回答
3

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

可以在使用 String.Equals... 时指定 StringComparision。

例子:

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

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

于 2011-04-26T20:42:31.470 回答
1

==操作员调用该方法String.Equals。所以充其量你正在保存一个方法调用。反编译代码:

public static bool operator ==(string a, string b)
{
  return string.Equals(a, b);
}
于 2011-04-26T20:40:32.133 回答
1

在这里寻找更好的描述。正如一个答案所述

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

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

于 2011-04-26T20:42:31.040 回答
0

没有区别,它只是一个运算符重载。对于字符串,它在内部是一样的。但是,您不想养成使用 == 来比较对象的习惯,这就是为什么不建议将它也用于字符串的原因。

于 2011-04-26T20:41:28.117 回答
0

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

于 2011-04-26T20:42:05.580 回答
0

如果您不关心字符串的情况并且不担心文化意识,那么它是一样的......

于 2011-04-26T20:42:14.787 回答