Object.ReferenceEquals Method (System)

Switch View :
ScriptFree
.NET Framework Class Library
Object.ReferenceEquals Method

Updated: September 2010

Determines whether the specified Object instances are the same instance.

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

Visual Basic
Public Shared Function ReferenceEquals ( _
	objA As Object, _
	objB As Object _
) As Boolean
C#
public static bool ReferenceEquals(
	Object objA,
	Object objB
)
Visual C++
public:
static bool ReferenceEquals(
	Object^ objA, 
	Object^ objB
)
F#
static member ReferenceEquals : 
        objA:Object * 
        objB:Object -> bool 

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 objA is the same instance as objB or if both are null; otherwise, false.
Remarks

Unlike the Equals method and the equality operator, the ReferenceEquals method cannot be overridden. Because of this, if you want to test two object references for equality and are unsure about the implementation of the Equals method, you can call the ReferenceEquals method. However, note that if objA and objB are value types, they are boxed before they are passed to the ReferenceEquals method.

Examples

The following example uses ReferenceEquals to determine if two objects are the same instance.

Visual Basic

Imports System

Public Class App
    Public Shared Sub Main() 
        Dim o As Object = Nothing
        Dim p As Object = Nothing
        Dim q As New Object
        Console.WriteLine(Object.ReferenceEquals(o, p))
        p = q
        Console.WriteLine(Object.ReferenceEquals(p, q))
        Console.WriteLine(Object.ReferenceEquals(o, p))
    End Sub 
End Class 
' This code produces the following output:
'
' True
' True
' False
'


C#

using System;

class MyClass {

   static void Main() {
      object o = null;
      object p = null;
      object q = new Object();

      Console.WriteLine(Object.ReferenceEquals(o, p));
      p = q;
      Console.WriteLine(Object.ReferenceEquals(p, q));
      Console.WriteLine(Object.ReferenceEquals(o, p));
   }
}


/*

This code produces the following output.

True
True
False

*/


Visual C++

using namespace System;
int main()
{
   Object^ o = nullptr;
   Object^ p = nullptr;
   Object^ q = gcnew Object;
   Console::WriteLine( Object::ReferenceEquals( o, p ) );
   p = q;
   Console::WriteLine( Object::ReferenceEquals( p, q ) );
   Console::WriteLine( Object::ReferenceEquals( o, p ) );
}

/*

This code produces the following output.

True
True
False

*/


Version Information

.NET Framework

Supported in: 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
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

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

Reference

Change History

Date

History

Reason

September 2010

Added the Remarks section.

Customer feedback.

Community Content

fmccown
Same as "Is"
It would be helpful to include a comment that ReferenceEquals is equivalent to the "Is" operator in VB. It would also be helpful to add links to "Is" and "IsNot" in the See Also section.