Sobes.tech
Junior

Ինչպե՞ս է տեղի ունենում տողերի համեմատությունը C#-ում: Համեմատվում են տողերի հղումները թե՞ նրանց արժեքները:

sobes.tech AI

Պատասխան AI-ից

C#-ում տողերը հղումային տիպեր են, բայց դրանց նախնական համեմատությունը կատարվում է արժեքով։ Հավասարության օպերատոր (==) և Equals մեթոդը համեմատում են տողերի պարունակությունը, ոչ թե հիշողության մեջ օբյեկտների հղումները։

Տողերը հղումով համեմատելու համար, ինչը շատ հազվադեպ է, կարելի է օգտագործել ստատիկ ReferenceEquals մեթոդը։

Նմուշներ՝

// Արժեքով համեմատություն (նախնական)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true

// Հղումով համեմատություն
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, տարբեր օբյեկտներ հիշողության մեջ

string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, նույն օբյեկտին է հղում անում

Հետևաբար, C#-ում տողերի համեմատությունը մեծամասամբ կատարվում է արժեքով։