Hi,
There are normally two ways to compare 2 objects. One by using == operator and by using the equals method. But these two are not same in the way they implements the comparison.
The difference is there in the type of object (reference type or value type)
Value Type
For the value types when we use the == operator the comparison is made based on the value of the object. Even with equals method the comparison will be made on value and hence there is no difference.
Reference Type
For reference type the way for working is different. The == operator will compare the reference point of both the objects and return the value.
But the Equals method will compare by value of the object and will also compare the type of the object.
For example
StringBuilder Sb1 = new StringBuilder("Vikram");
StringBuilder Sb2 = new StringBuilder("Vikram");
Sb1 == Sb2 //will return False
Sb1.Equals(Sb2) //will return True
But there is an exception to this rule. The exception is made for the string class.
String S1 = "Vikram";
String S2 = "Vikram";
S1 == S2 //will return True
S1.Equals(S2) //will return True
Also remember that the equals operator also compare the type of the method along with value so…
int i = 0;
byte b = 0;
i == b //will return True
i.Equals(b) //will return False since the type is different for the type passed
This is why it is always advisable to use the == operator for the reference type and equals method for the value type.
Vikram