Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Object.ReferenceEquals, méthode

Détermine si les instances de Object spécifiées sont identiques.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

public static bool ReferenceEquals(
	Object objA,
	Object objB
)

Paramètres

objA
Type : System.Object
Premier objet à comparer.
objB
Type : System.Object
Second objet à comparer.

Valeur de retour

Type : System.Boolean
true si objA est la même instance que objB ou s'il s'agit de deux valeurs null ; sinon, false.

Contrairement à la méthode Equals et l'opérateur d'égalité, la méthode ReferenceEquals ne peut pas être substituée. Pour cette raison, si vous souhaitez tester l'égalité de deux références d'objet et si vous n'êtes pas sûr de l'implémentation de la méthode Equals, vous pouvez appeler la méthode ReferenceEquals.

Toutefois, la valeur de retour de la méthode ReferenceEquals peut sembler anormale dans ces deux cas :

  • Lors de la comparaison de types valeur. Si objA et objB sont des types valeur, ils sont convertis avant d'être passés à la méthode ReferenceEquals. Cela signifie que si objA et objB représentent tous deux la même instance d'un type valeur, la méthode ReferenceEquals retourne néanmoins false, comme dans l'exemple suivant.

    
    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
    
    
    
  • Lors de la comparaison de chaînes Si objA et objB sont des chaînes, la méthode ReferenceEquals retourne true si la chaîne est internée. Elle réalise pas de test d'égalité des valeurs. Dans l'exemple suivant, s1 et s2 sont égaux car ils sont deux instances d'une chaîne internée unique. Toutefois, s3 et s4 ne sont pas identiques, car bien qu'ils aient des valeurs de chaîne identiques, cette chaîne n'est pas 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("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
    
    
    

    Pour plus d'informations sur la chaîne internant, consultez l'String.IsInterned.

L'exemple suivant utilise ReferenceEquals pour déterminer si les deux objets possèdent la même instance.


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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications du Windows Store

Pris en charge dans : Windows 8

.NET pour les applications Windows Phone

Pris en charge dans : 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 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft