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
0 sur 1 ont trouvé cela utile - Évaluez ce sujet

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. C'est pourquoi, si vous souhaitez tester deux références d'objet d'égalité et vous ignorez sur 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 :

  • En comparant les types valeur. Si objA et objB sont des types valeur, ils sont de casse boxing avant d'être passés à la méthode ReferenceEquals. Cela signifie que si objA et objB représentent la même instance d'un type valeur, la méthode ReferenceEquals néanmoins retourne 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
    
    
    
  • En 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. Il n'effectue pas un 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 soient ont 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
    
    
    

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, 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

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.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.