String1.Equals(string2)和string1 == string2 C#之间的区别

时间:2011-11-11 17:48:37

标签: c# .net string if-statement

  

可能重复:
  C#: String.Equals vs. ==
  Are string.Equals() and == operator really same?

有时在两个字符串之间的条件下,我写道:

if(string1==string2) //Do something

有时我会写:

if(string1.Equals(string2)) //Do something

问题有时是第一个不起作用,或者是错误的,两个表达式之间有什么区别吗?

2 个答案:

答案 0 :(得分:10)

只要两个操作数的编译时类型为string ,第一个将始终工作

如果任一操作数的编译时类型不是string,它将使用正常的引用标识比较,而不是比较字符串是否相等。基本上,您希望调用==(string, string)重载而不是正常的==(object, object)重载。

请注意,即使string1为空,第一个将成功,而在这种情况下,第二个将抛出NullReferenceException。另一种方法是保留Equals电话,但要避免此问题,请致电static object.Equals(object, object) method

if (object.Equals(string1, string2))

我个人在编译时类型合适的情况下只使用==

答案 1 :(得分:-1)

在两个字符串类型上使用==将执行引用标识检查,这意味着如果两个引用都指向同一个对象,它将仅返回true。另一方面,Equals应执行值比较,如果引用指向等效的对象,则返回true。