C# Language
Operator równości
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);