Default Equals behavior C# with Example



Default Equals behavior C# with Example

Equals is declared in the Object class itself. 
public virtual bool Equals(Object obj); 
By default, Equals has the following behavior: 
If the instance is a reference type, then Equals will return true only if the references are the same. 
If the instance is a value type, then Equals will return true only if the type and value are the same. 
string is a special case. It behaves like a value type. 
 

namespace ConsoleApplication 
{ 
public class Program 
{ 
public static void Main(string[] args) 
{ 
//areFooClassEqual: False 
Foo fooClass1 = new Foo("42"); 
Foo fooClass2 = new Foo("42"); 
bool areFooClassEqual = fooClass1.Equals(fooClass2); 
Console.WriteLine("fooClass1 and fooClass2 are equal: {0}", areFooClassEqual); 
//False 
//areFooIntEqual: True 
int fooInt1 = 42; 
int fooInt2 = 42; 
bool areFooIntEqual = fooInt1.Equals(fooInt2); 
Console.WriteLine("fooInt1 and fooInt2 are equal: {0}", areFooIntEqual); 
//areFooStringEqual: True 
string fooString1 = "42"; 
string fooString2 = "42"; 
bool areFooStringEqual = fooString1.Equals(fooString2); 
Console.WriteLine("fooString1 and fooString2 are equal: {0}", areFooStringEqual); 
} 
} 
public class Foo 
{ 
public string Bar { get; } 
public Foo(string bar) 
{ 
Bar = bar; 
} 
} 
} 

0 Comment's

Comment Form

Submit Comment