Sobes.tech
Junior

Wie erfolgt der Vergleich von Strings in C#? Werden die Referenzen auf Strings oder ihre Werte verglichen?

sobes.tech KI

Antwort von AI

In C# sind Strings Referenztypen, aber ihre Standardvergleich erfolgt nach Wert. Der Gleichheitsoperator (==) und die Methode Equals vergleichen den Inhalt der Strings, nicht die Referenzen auf die Objekte im Speicher.

Um Strings nach Referenz zu vergleichen, was äußerst selten vorkommt, kann die statische Methode ReferenceEquals verwendet werden.

Hier sind Beispiele:

// Vergleich nach Wert (Standard)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true

// Vergleich nach Referenz
string strA = new string(new char[] { 'w', 'o', 'r', 'l', 'd' });
string strB = new string(new char[] { 'w', 'o', 'r', 'l', 'd' });
bool areEqualByReference = object.ReferenceEquals(strA, strB); // false, unterschiedliche Objekte im Speicher

string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, verweist auf dasselbe Objekt

Daher wird in den meisten Szenarien der Vergleich von Strings in C# nach Wert durchgeführt.