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# ба рӯи арзиш сурат мегирад.