Equals Method (Object, Object)
Collapse the table of content
Expand the table of content

Object.Equals Method (Object, Object)


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(Object, Object) 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 objBare 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(Object, Object) 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

Universal Windows Platform
Available since 4.5
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top
© 2015 Microsoft