‘==’vs string.equals c#.net
可能重复:
C#:String.Equals vs. ==
大家好。
有段时间有人告诉我你不应该将字符串与==进行比较,并且你应该使用string.equals(),但它指的是java。
¿.NET c#中的差异beteen ==和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)
大多数情况下,我认为它是编码偏好。 使用您喜欢的任何一种。
在这里查看更好的描述。 正如一个答案所说
当==用于对象类型时,它将解析为System.Object.ReferenceEquals。
Equals只是一个虚方法,并且行为如此,因此将使用被覆盖的版本(对于字符串类型,它将比较内容)。
==
运算符调用String.Equals
方法。 所以最多你要保存一个方法调用。 反编译代码:
public static bool operator ==(string a, string b) { return string.Equals(a, b); }
没有区别,它只是一个操作员超载。 对于字符串,它在内部是相同的。 但是,你不想养成使用==来比较对象的习惯,这就是为什么不建议将它用于字符串的原因。
在C#中,字符串没有区别。
如果你不关心字符串的情况而不担心文化意识,那么它就是一样的……