Junior
Kuidas toimub stringide võrdlemine C#-s? Kas võrreldakse stringide viiteid või nende väärtusi?
sobes.tech AI
Vastus AI-lt
C#-s ir virknēs ir atsauces tipi, kuid nende vaikimisi võrdlus toimub väärtuse järgi. Võrdlusoperaator (==) ja Equals meetod võrdlevad stringide sisu, mitte mälus olevate objektide viiteid.
Stringide võrdlemiseks viite järgi, mis on väga haruldane, saab kasutada staatilist meetodit ReferenceEquals.
Näited:
// Väärtuse järgi võrdlus (vaikimisi)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true
// Viite järgi võrdlus
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, erinevad objektid mälus
string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, viitavad samale objektile
Seega toimub enamikul juhtudel stringide võrdlus C#-s väärtuse järgi.