Duration (Pacific Standard Time):
To (Pacific Standard Time):
Impact:
  • None
User Action:
  • None
.NET Framework Class Library

Object.Equals Method (Object, Object)

Determines whether the specified object instances are considered equal.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
Public Shared Function Equals ( _
	objA As Object, _
	objB As Object _
) As Boolean

Parameters

objA
Type: System.Object

The first object to compare.

objB
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 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(Object, Object) method and compares it with the ReferenceEquals method.

Module Example
   Public Sub Main()
      Dim m1 As New Dog("Alaskan Malamute")
      Dim m2 As New Dog("Alaskan Malamute")
      Dim g1 As New Dog("Great Pyrenees")
      Dim g2 As Dog = g1
      Dim d1 As New Dog("Dalmation")
      Dim n1 As Dog = Nothing 
      Dim n2 As Dog = Nothing

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

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

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

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

Public Class Dog
   ' Public field. 
   Public Breed As String 

   ' Class constructor. 
   Public Sub New(dogBreed As String)
      Me.Breed = dogBreed
   End Sub 

   Public Overrides Function Equals(obj As Object) As Boolean 
      If obj Is Nothing OrElse Not typeof obj Is Dog Then 
         Return False 
      Else 
         Return Me.Breed = CType(obj, Dog).Breed
      End If    
   End Function 

   Public Overrides Function GetHashCode() As Integer 
      Return Me.Breed.GetHashCode()
   End Function 

   Public Overrides Function ToString() As String 
      Return Me.Breed
   End Function 
End Class 
' 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

.NET Framework

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

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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