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