Recherche…


Types d'égalité dans l'opérateur c # et d'égalité

En C #, il existe deux types d'égalité: l'égalité de référence et l'égalité de valeur. L'égalité des valeurs est la signification généralement comprise de l'égalité: cela signifie que deux objets contiennent les mêmes valeurs. Par exemple, deux entiers de la valeur 2 ont une valeur d'égalité. L'égalité de référence signifie qu'il n'y a pas deux objets à comparer. Au lieu de cela, il existe deux références d'objet, toutes deux faisant référence au même objet.

object a = new object();
object b = a;
System.Object.ReferenceEquals(a, b);  //returns true

Pour les types de valeur prédéfinis, l'opérateur d'égalité (==) renvoie true si les valeurs de ses opérandes sont égales, false sinon. Pour les types de référence autres que string, == renvoie true si ses deux opérandes font référence au même objet. Pour le type de chaîne, == compare les valeurs des chaînes.

// Numeric equality: True
Console.WriteLine((2 + 2) == 4);

// Reference equality: different objects, 
// same boxed value: False.
object s = 1;
object t = 1;
Console.WriteLine(s == t);

// Define some strings:
string a = "hello";
string b = String.Copy(a);
string c = "hello";

// Compare string values of a constant and an instance: True
Console.WriteLine(a == b);

// Compare string references; 
// a is a constant but b is an instance: False.
Console.WriteLine((object)a == (object)b);

// Compare string references, both constants 
// have the same value, so string interning
// points to same reference: True.
Console.WriteLine((object)a == (object)c);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow