ReferenceEquals Método (Object, Object)
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Object.ReferenceEquals (Método) (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

Primer objeto que se va a comparar.

objB

Segundo objeto que se va a comparar.

Valor devuelto

Type: System.Boolean

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

A diferencia de la Equals (método) y el operador de igualdad, la ReferenceEquals no se puede reemplazar 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 parecer anómala en estos dos casos:

  • 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 ambas objA y objB representan la misma instancia de un tipo de valor, la ReferenceEquals sin embargo, se devuelve el método false, como se muestra en el siguiente ejemplo.

    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
    
  • Cuando se comparan cadenas.Si objA y objB son cadenas, el ReferenceEquals método devuelve true Si la cadena se aplica el método Intern.No se realiza una prueba de igualdad de valores.En el ejemplo siguiente, s1 y s2 son iguales porque son dos instancias de una sola cadena de método Intern.Sin embargo, s3 y s4 no son iguales, porque aunque se tienen valores de cadena idénticos, 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 cadenas, vea String.IsInterned.

El siguiente ejemplo 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

*/

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar:
© 2016 Microsoft