Sobes.tech
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.