Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Object.ReferenceEquals (Object, Object)

 

Determina si las instancias de Object especificadas son la misma instancia.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static bool ReferenceEquals(
	object objA,
	object objB
)

Parámetros

objA
Type: System.Object

Primer objeto que se va a comparar.

objB
Type: System.Object

Segundo objeto que se va a comparar.

Valor devuelto

Type: System.Boolean

trueSi objA es la misma instancia que objB o si ambos son null; en caso contrario, false.

A diferencia de la Equals método y el operador de igualdad, el ReferenceEquals no se puede invalidar el método. Por este motivo, si desea probar dos referencias de igualdad de objetos y no está seguro acerca de la implementación de la Equals método, se puede llamar a la ReferenceEquals método.

Sin embargo, el valor devuelto de la ReferenceEquals método puede aparecer anómalos en los dos escenarios:

  • Al comparar los tipos de valor. Si objA y objB son tipos de valor, se han convertido antes de pasarlos a la ReferenceEquals método. Esto significa que si ambos objA y objB representan la misma instancia de un tipo de valor, el ReferenceEquals , sin embargo, devuelve el método false, como se muestra en el ejemplo siguiente.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          int int1 = 3;
          Console.WriteLine(Object.ReferenceEquals(int1, int1));
          Console.WriteLine(int1.GetType().IsValueType);
       }
    }
    // The example displays the following output:
    //       False
    //       True
    

    Para obtener información sobre los tipos de valor de conversión boxing, vea Conversión boxing y unboxing (Guía de programación de C#).

  • Cuando se comparan cadenas. Si objA y objB son cadenas, la ReferenceEquals método true si la cadena se aplica el método Intern. No lleva a cabo una prueba de igualdad de valores. En el ejemplo siguiente, s1 y s2 son iguales porque son dos instancias de una sola cadena aplicado el método Intern. Sin embargo, s3 y s4 no son iguales, porque aunque tienen valores de cadena idéntica, esa cadena no es aplica el método Intern.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          String s1 = "String1";
          String s2 = "String1";
          Console.WriteLine("s1 = s2: {0}", Object.ReferenceEquals(s1, s2));
          Console.WriteLine("{0} interned: {1}", s1, 
                            String.IsNullOrEmpty(String.IsInterned(s1)) ? "No" : "Yes");
    
          String suffix = "A";
          String s3 = "String" + suffix;
          String s4 = "String" + suffix;
          Console.WriteLine("s3 = s4: {0}", Object.ReferenceEquals(s3, s4));
          Console.WriteLine("{0} interned: {1}", s3, 
                            String.IsNullOrEmpty(String.IsInterned(s3)) ? "No" : "Yes");
       }
    }
    // The example displays the following output:
    //       s1 = s2: True
    //       String1 interned: Yes
    //       s3 = s4: False
    //       StringA interned: No
    

    Para obtener más información acerca de la asignación al grupo interno de cadena, vea String.IsInterned.

En el ejemplo siguiente se utiliza ReferenceEquals para determinar si dos objetos son la misma instancia.

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

*/

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: