What is the difference between == and .Equals()?

==: Checks for reference equality (whether two references point to the same object) for reference types and value equality for value types.

.Equals(): Virtual method. Can be overridden to provide custom equality logic.

  • Value types override it for value equality.
  • Default for reference types is reference equality.

Example:

string str1 = "hello";
string str2 = "hello";
Console.WriteLine(str1 == str2); // True
Console.WriteLine(str1.Equals(str2)); // True

MyClass obj1 = new MyClass { Value = 10 };
MyClass obj2 = new MyClass { Value = 10 };
Console.WriteLine(obj1 == obj2); // false, different references
Console.WriteLine(obj1.Equals(obj2)); // false unless .Equals is overriden.

Leave a Reply

Your email address will not be published. Required fields are marked *