C# Language
Gleichheitsoperator
Suche…
Gleichheitsarten in c # und Gleichheitsoperator
In C # gibt es zwei verschiedene Arten von Gleichheit: Referenzgleichheit und Wertgleichheit. Wertgleichheit ist die allgemein verstandene Bedeutung von Gleichheit: Dies bedeutet, dass zwei Objekte die gleichen Werte enthalten. Beispielsweise haben zwei Ganzzahlen mit dem Wert 2 die Wertgleichheit. Referenzgleichheit bedeutet, dass nicht zwei Objekte verglichen werden müssen. Stattdessen gibt es zwei Objektverweise, die beide auf dasselbe Objekt verweisen.
object a = new object();
object b = a;
System.Object.ReferenceEquals(a, b); //returns true
Bei vordefinierten Werttypen gibt der Gleichheitsoperator (==) true zurück, wenn die Werte seiner Operanden gleich sind, andernfalls false. Bei anderen Referenztypen als string gibt == true zurück, wenn seine beiden Operanden auf dasselbe Objekt verweisen. Für den Zeichenfolgentyp vergleicht == die Werte der Zeichenfolgen.
// 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);