.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Win Surprise Gifts!!!

Top 5 Contributors of the Month

Home >> Articles >> .Net Framework >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Difference between a.Equals(b) and a == b

Posted By:Prasanti Prusty       Posted Date: December 18, 2009    Points: 15    Category: .Net Framework    URL: http://www.dotnetspark.com  

Difference between a.Equals(b) and a == b?

For value types :  "==" and Equals() works same way : Compare two objects by VALUE
int i = 5;
int k= 5;
i == k > True
i.Equals(k) > True

For reference types : both works differently :
"==" compares reference - returns true if and only if both references point to the SAME object while
"Equals" method compares object by VALUE and it will return true if the references refers object which are equivalent
StringBuilder sb1 = new StringBuilder("Mahesh");
StringBuilder sb2 = new StringBuilder("Mahesh");
sb1 == sb2 > False
sb1.Equals(sb2) > True

But now look at following issue:
String s1 = "Mahesh";
String s2 = "Mahesh";
In above case the results will be,
s1 == s2 > True
s1.Equals(s2) > True
String is actually reference type : its a sequence of "Char" and its also immutable but as you saw above, it will behave like Value Types in this case.
Exceptions are always there ;)

Now another interesting case:
int i = 0;
byte b = 0;
i == b > True
i.Equals(b) > False
So, it means Equals method compare not only value but it compares TYPE also in Value Types.

Recommendation :
For value types: use "=="
For reference types: use Equals method.

 Subscribe to Articles


Further Readings:


No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend