ReferenceEquals Metodo (Object, Object)
Comprimi il sommario
Espandi il sommario
Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Object.ReferenceEquals (Object, Object)

 

Determina se le istanze di Object specificate rappresentano la stessa istanza.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public static bool ReferenceEquals(
	object objA,
	object objB
)

Parametri

objA
Type: System.Object

Il primo oggetto da confrontare.

objB
Type: System.Object

Secondo oggetto da confrontare.

Valore restituito

Type: System.Boolean

true se objA è la stessa istanza di objB oppure se entrambe sono Null; in caso contrario, false.

A differenza di Equals metodo e l'operatore di uguaglianza, il ReferenceEquals non può essere l'override del metodo. Per questo motivo, se si desidera testare due riferimenti per verificarne l'uguaglianza di oggetti e non si conosce l'implementazione del Equals (metodo), è possibile chiamare il ReferenceEquals metodo.

Tuttavia, il valore restituito di ReferenceEquals metodo potrebbe sembrare anomali in questi due scenari:

  • Durante il confronto dei tipi di valore. Se objA e objB sono tipi di valore, siano boxed prima che vengano passati per il ReferenceEquals metodo. Ciò significa che se entrambi objA e objB rappresentano la stessa istanza di un tipo di valore, il ReferenceEquals metodo restituisce comunque false, come illustrato nell'esempio seguente.

    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
    

    Per informazioni sui tipi di valore di conversione boxing, vedere Boxing e unboxing (Guida per programmatori C#).

  • Durante il confronto di stringhe. Se objA e objB sono stringhe, il ReferenceEquals restituisce true Se la stringa viene inserita. Non esegue un test di uguaglianza. Nell'esempio seguente, s1 e s2 sono uguali poiché sono due istanze di una singola stringa centralizzata. Tuttavia, s3 e s4 non sono uguali, perché anche se hanno valori di stringa identica, tale stringa non è inserita.

    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
    

    Per ulteriori informazioni sull'inserimento di stringhe, vedere String.IsInterned.

Nell'esempio seguente viene utilizzato ReferenceEquals per determinare se due oggetti sono la stessa istanza.

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
Disponibile da 8
.NET Framework
Disponibile da 1.1
Portable Class Library
Supportato in: portable .NET platforms
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra:
© 2016 Microsoft