Junior
C#-da sətirlərin müqayisəsi necə həyata keçirilir? Sətirlərə istinadlar mı yoxsa onların dəyərləri mi müqayisə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində sətirlər referans tiplərdir, lakin onların standart müqayisəsi dəyərə görə həyata keçirilir. Bərabərlik operatoru (==) və Equals metodu sətirlərin məzmununu müqayisə edir, yaddaşdakı obyektlərin referanslarını yox.
Sətirləri referans üzrə müqayisə etmək, bu çox nadir hallarda olur, statik ReferenceEquals metodundan istifadə etmək mümkündür.
Budur nümunələr:
// Dəyərə görə müqayisə (standart)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true
// Referans üzrə müqayisə
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, fərqli obyektlər yaddaşda
string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, eyni obyektə istinad edir
Buna görə, çox hallarda, C#-da sətirlərin müqayisəsi dəyərə görə həyata keçirilir.