可能重复:
C#: String.Equals vs. ==
大家好。
有时有人告诉我,你永远不应该用 == 比较字符串,你应该使用 string.equals(),但它指的是 java.util.equals()。
¿ .NET c# 中 == 和 string.equals 的区别是什么?
可能重复:
C#: String.Equals vs. ==
大家好。
有时有人告诉我,你永远不应该用 == 比较字符串,你应该使用 string.equals(),但它指的是 java.util.equals()。
¿ .NET c# 中 == 和 string.equals 的区别是什么?
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
}
在 C# 中,作为运算符没有区别,==
并且!=
已在字符串类型中重载以调用equals()
. 请参阅此MSDN 页面。
== 实际上最终在字符串上执行 String.Equals。
您可以在使用 String.Equals... 时指定 StringComparision。
例子:
MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase)
大多数情况下,我认为这是一种编码偏好。使用任何你喜欢的。
==
操作员调用该方法String.Equals
。所以充其量你正在保存一个方法调用。反编译代码:
public static bool operator ==(string a, string b)
{
return string.Equals(a, b);
}
在这里寻找更好的描述。正如一个答案所述
当 == 用于对象类型时,它将解析为 System.Object.ReferenceEquals。
Equals 只是一个虚拟方法并且行为如此,因此将使用覆盖的版本(对于字符串类型比较内容)。
没有区别,它只是一个运算符重载。对于字符串,它在内部是一样的。但是,您不想养成使用 == 来比较对象的习惯,这就是为什么不建议将它也用于字符串的原因。
在 C# 中,字符串没有区别。
如果您不关心字符串的情况并且不担心文化意识,那么它是一样的......