Klasse Object
Jede Klasse erbt automatisch von der Klasse Object.
Methode/Eigenschaft | Sichtbarkeit | Beschreibung |
---|---|---|
Equals | Public | Überprüft, ob das aktuelle Objekt einem anderen Objekt entspricht. |
GetHashCode | Public | Gibt den Hashcode des aktuellen Objekts zurück. |
GetType | Public | Gibt den Typ des aktuellen Objekts zurück. |
ToString | Public | Gibt eine Zeichenfolgendarstellung des aktuellen Objekts zurück. |
Finalize | Protected | Wird aufgerufen, wenn das Objekt durch den Garbage Collector freigegeben wird. |
MemberwiseClone | Protected | Erstellt eine flache Kopie des aktuellen Objekts. |
ReferenceEquals | Public, Static | Überprüft, ob zwei Objekte auf die gleiche Speicheradresse verweisen. |
Referenzvergleich
Equals
und ReferenceEquals
sind beide Methoden der Klasse Object
in C#, die dazu verwendet werden, um Objekte zu vergleichen. Der Hauptunterschied zwischen den beiden Methoden besteht darin, wie sie Objekte vergleichen.
Equals
vergleicht die inhaltlichen Werte von zwei Objekten, während ReferenceEquals
die Speicheradresse von zwei Objekten vergleicht. Mit anderen Worten, Equals
gibt true
zurück, wenn zwei Objekte den gleichen inhaltlichen Wert haben, während ReferenceEquals
nur true
zurückgibt, wenn beide Variablen auf dasselbe Objekt im Speicher verweisen.
Hier ist ein Beispiel, das die Unterschiede zwischen Equals
und ReferenceEquals
verdeutlicht:
string s1 = "hello";
string s2 = "hello";
string s3 = s1;
bool b1 = s1.Equals(s2); // true, da der inhaltliche Wert der beiden Strings gleich ist
bool b2 = s1.Equals(s3); // true, da beide Variablen auf dasselbe Objekt verweisen
bool b3 = Object.ReferenceEquals(s1, s2); // false, da s1 und s2 unterschiedliche Objekte im Speicher sind
bool b4 = Object.ReferenceEquals(s1, s3); // true, da s1 und s3 auf dasselbe Objekt im Speicher verweisen
In diesem Beispiel sind s1
und s2
unterschiedliche Variablen, die auf dasselbe Objekt im Speicher verweisen, da beide den Wert "hello" enthalten. s3
ist eine andere Variable, die auf dasselbe Objekt im Speicher wie s1
verweist. Equals
gibt true
zurück, wenn der inhaltliche Wert von s1
und s2
gleich ist, was hier der Fall ist. ReferenceEquals
gibt nur true
zurück, wenn beide Variablen auf dasselbe Objekt im Speicher verweisen, was hier für s1
und s3
der Fall ist, aber nicht für s1
und s2
.
ToString() - Methode
Die ToString
-Methode gibt standardmäßig den vollständig qualifizierten Namen der Klasse zurück, aber jede Klasse kann diese Methode überschreiben, um ihren eigenen Textwert zu liefern. Hier ist ein Beispiel, wie man die ToString
-Methode in einer benutzerdefinierten Klasse überschreiben kann:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return $"{Name} ({Age})";
}
}
In diesem Beispiel definiert die Person
-Klasse eine Name
- und eine Age
-Eigenschaft. Die ToString
-Methode wird überschrieben, um einen formatierten String zurückzugeben, der den Namen und das Alter der Person enthält. Wenn Sie nun eine Person
-Instanz erstellen und die ToString
-Methode aufrufen, erhalten Sie den formatierten Textwert:
Person p = new Person { Name = "Alice", Age = 30 };
string text = p.ToString(); // "Alice (30)"
Die ToString
-Methode kann nützlich sein, um Objekte in einer lesbaren Form anzuzeigen, beispielsweise in Debugging-Szenarien oder in Benutzeroberflächen, die den Benutzern die aktuelle Statusinformationen des Programms anzeigen.