Szukaj…


Rodzaje równości w c # i operator równości

W języku C # istnieją dwa różne rodzaje równości: równość odniesienia i równość wartości. Równość wartości jest powszechnie rozumianym znaczeniem równości: oznacza, że dwa obiekty zawierają te same wartości. Na przykład dwie liczby całkowite o wartości 2 mają równość wartości. Równość odniesienia oznacza, że nie ma dwóch obiektów do porównania. Zamiast tego istnieją dwa odwołania do obiektów, oba odnoszące się do tego samego obiektu.

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

W przypadku predefiniowanych typów wartości operator równości (==) zwraca wartość true, jeśli wartości jego argumentów są równe, w przeciwnym razie false. W przypadku typów odwołań innych niż ciąg znaków == zwraca wartość true, jeśli dwa operandy odnoszą się do tego samego obiektu. Dla typu ciągu == porównuje wartości ciągów.

// 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow