Tuesday, July 17, 2007

Difference between == and .Equals Method

What is Difference between == and .Equals() Method?

For Value Type: == and .Equals() method usually compare two objects by value.

For Value Type: == and .Equals() method usually compare two objects by value.

For Example:

int x = 10;

int y = 10;

Console.WriteLine( x == y);

Console.WriteLine(x.Equals(y));


Will display:

True

True




For Reference Type: == performs an identity comparison, i.e. it will only return true if both references point to the same object. While Equals() method is expected to perform a value comparison, i.e. it will return true if the references point to objects that are equivalent.

For Example:


StringBuilder s1 = new StringBuilder("Yes");

StringBuilder s2 = new StringBuilder("Yes");

Console.WriteLine (s1 == s2);

Console.WriteLine(s1.Equals(s2));


Will display:

False

True


In above example, s1 and s2 are different objects hence "==" returns false, but they are equivalent hence "Equals()" method returns true. Remember there is an exception of this rule, i.e. when you use "==" operator with string class it compares value rather than identity.


When to use "==" operator and when to use ".Equals()" method?

For value comparison, with Value Tyep use "==" operator and use "Equals()" method while performing value comparison with Reference Type.

Thanks: http://dotnetguts.blogspot.com/2007/07/difference-between-and-equals-method.html