'=='vs string.equals c#.net

时间:2011-04-26 20:39:17

标签: c# .net equals-operator

  

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

大家好。

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

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

8 个答案:

答案 0 :(得分:17)

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
}

答案 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)

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