Exportar (0) Imprimir
Expandir todo
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)

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
Tipo: System.Object
Primer objeto que se va a comparar.
objB
Tipo: System.Object
Segundo objeto que se va a comparar.

Valor devuelto

Tipo: System.Boolean
Es true si objA es la misma instancia que objB, o si ambos parámetros son referencias null; en caso contrario, es false.

A diferencia del método Equals y el operador de igualdad, no se puede invalidar el método ReferenceEquals. Debido a esto, si desea probar dos referencias de objeto para la igualdad y no está seguro sobre la implementación del método de Equals , puede llamar al método de ReferenceEquals .

Sin embargo, el valor devuelto del método de ReferenceEquals puede resultar anómalo en estas dos escenarios:

  • Al comparar los tipos de valor. Si objA y objB son tipos de valor, se combinación antes de que se pasan al método de ReferenceEquals . Esto significa que si objA y objB representan la misma instancia de un tipo de valor, el método de ReferenceEquals sin embargo devuelve 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 comparar las cadenas. Si objA y objB son cadenas, el método de ReferenceEquals devuelve true si se interna la cadena. No realiza una prueba de igualdad de valores. En el ejemplo siguiente, s1 y s2 son iguales porque son dos instancias de una única cadena encerrado. Sin embargo, s3 y s4 no son iguales, porque aunque tiene valores de cadena idénticas, que la cadena no se interna.

    
    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("s1 = s2: {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
    //       s1 = s2: False
    //       StringA interned: No
    
    
    

    Para obtener más información sobre la cadena que interna, vea String.IsInterned.

En 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

*/


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

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 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft