Object.Equals Method (Object, Object)

Updated: August 2012

Determines whether the specified object instances are considered equal.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static bool Equals(
	Object objA,
	Object objB


Type: System.Object

The first object to compare.

Type: System.Object

The second object to compare.

Return Value

Type: System.Boolean
true if the objects are considered equal; otherwise, false. If both objA and objB are null, the method returns true.

The static Equals method indicates whether two objects, objA and objB, are equal. It also enables you to test objects whose value is null for equality. It compares objA and objB for equality as follows:

  • It determines whether the two objects represent the same object reference. If they do, the method returns true. This test is equivalent to calling the ReferenceEquals method. In addition, if both objA and objB are null, the method returns true.

  • It determines whether either objA or objB is null. If so, it returns false.

  • If the two objects do not represent the same object reference and neither is null, it calls objA.Equals(objB) and returns the result. This means that if objA overrides the Object.Equals(Object) method, this override is called.

The following example illustrates the Equals method and compares it with the ReferenceEquals method.

using System;

public class Example
   public static void Main()
      Dog m1 = new Dog("Alaskan Malamute");
      Dog m2 = new Dog("Alaskan Malamute");
      Dog g1 = new Dog("Great Pyrenees");
      Dog g2 = g1;
      Dog d1 = new Dog("Dalmation");
      Dog n1 = null;
      Dog n2 = null;

      Console.WriteLine("null = null: {0}", Object.Equals(n1, n2));
      Console.WriteLine("null Reference Equals null: {0}\n", Object.ReferenceEquals(n1, n2));

      Console.WriteLine("{0} = {1}: {2}", g1, g2, Object.Equals(g1, g2));
      Console.WriteLine("{0} Reference Equals {1}: {2}\n", g1, g2, Object.ReferenceEquals(g1, g2));

      Console.WriteLine("{0} = {1}: {2}", m1, m2, Object.Equals(m1, m2));
      Console.WriteLine("{0} Reference Equals {1}: {2}\n", m1, m2, Object.ReferenceEquals(m1, m2));

      Console.WriteLine("{0} = {1}: {2}", m1, d1, Object.Equals(m1, d1));  
      Console.WriteLine("{0} Reference Equals {1}: {2}", m1, d1, Object.ReferenceEquals(m1, d1));  

public class Dog
   // Public field. 
   public string Breed;

   // Class constructor. 
   public Dog(string dogBreed)
      this.Breed = dogBreed;

   public override bool Equals(Object obj)
      if (obj == null || !(obj is Dog))
         return false;
         return this.Breed == ((Dog) obj).Breed;

   public override int GetHashCode()
      return this.Breed.GetHashCode();

   public override string ToString()
      return this.Breed;
// The example displays the following output: 
//       null = null: True 
//       null Reference Equals null: True 
//       Great Pyrenees = Great Pyrenees: True 
//       Great Pyrenees Reference Equals Great Pyrenees: True 
//       Alaskan Malamute = Alaskan Malamute: True 
//       Alaskan Malamute Reference Equals Alaskan Malamute: False 
//       Alaskan Malamute = Dalmation: False 
//       Alaskan Malamute Reference Equals Dalmation: False

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0

XNA Framework

Supported in: 3.0, 2.0, 1.0




August 2012

Revised extensively.

Customer feedback.