可能重复:
C#: String.Equals vs. ==
大家好。
有段时间有人告诉我,你不应该将字符串与==进行比较,并且你应该使用string.equals(),但是它指的是java。
¿.NET c#中的差异beteen ==和string.equals是什么?
答案 0 :(得分:17)
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
}
答案 1 :(得分:3)
在C#中没有区别,因为运算符==
和!=
已在字符串类型中重载以调用equals()
。请参阅此MSDN page。
答案 2 :(得分:3)
==实际上最终会在字符串上执行String.Equals。
使用String.Equals时,可以指定StringComparision。
示例:
MyString.Equals("TestString", StringComparison.InvariantCultureIgnoreCase)
大多数情况下,我认为这是编码偏好。使用您喜欢的任何一种。
答案 3 :(得分:1)
==
运算符调用String.Equals
方法。所以最多你要保存一个方法调用。反编译代码:
public static bool operator ==(string a, string b)
{
return string.Equals(a, b);
}
答案 4 :(得分:1)
查看here以获得更好的说明。正如一个答案所述
当对象类型使用==时,它将解析为 System.Object.ReferenceEquals。
等于只是一种虚拟方法 表现如此,所以被覆盖 将使用版本(对于 字符串类型比较内容)。
答案 5 :(得分:0)
没有区别,它只是一个操作员过载。对于字符串,它在内部是相同的。 但是,你不想养成使用==来比较对象的习惯,以及为什么不建议将它用于字符串。
答案 6 :(得分:0)
在C#中,字符串没有区别。
答案 7 :(得分:0)
如果你不关心字符串的情况而不担心文化意识那么它也是一样的......