Junior
C# da satrlarni taqqoslash qanday amalga oshiriladi? Satrga havolalar yoki ularning qiymatlari taqqoslanadimi?
sobes.tech AI
AIdan javob
C# da matnlar referens turdagi bo'lib, ularning standart solishtiruvi qiymat bo'yicha amalga oshiriladi. Tenglik operatori (==) va Equals metodi matnlarning mazmunini solishtiradi, xotiradagi obyektlar referenslarini emas.
Matnlarni referens bo'yicha solishtirish, bu juda kam uchraydigan holat, uchun statik ReferenceEquals metodidan foydalanish mumkin.
Mana misollar:
// Qiymat bo'yicha solishtirish (standart)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true
// Referens bo'yicha solishtirish
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, turli obyektlar
string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, bir xil obyektga ishora qiladi
Shuning uchun, ko'p hollarda, C# da matnlarni solishtirish qiymat bo'yicha amalga oshiriladi.