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);


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow