Sobes.tech
Junior

Hogyan történik a sztringek összehasonlítása C#-ban? Összehasonlítják a sztringek hivatkozásait vagy értékeit?

sobes.tech MI

Válasz az MI-től

C#-ban a szövegek referencia típusok, de alapértelmezés szerint érték szerint hasonlítjuk össze őket. Az egyenlőség (==) operátor és az Equals metódus a szövegek tartalmát hasonlítja össze, nem a memóriában lévő objektumokra mutató referenciákat.

A szövegek referencia szerinti összehasonlítására, ami rendkívül ritka, a ReferenceEquals statikus metódus használható.

Íme példák:

// Érték szerinti összehasonlítás (alapértelmezett)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true

// Referencia szerinti összehasonlítás
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, külön objektumok a memóriában

string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, ugyanarra az objektumra mutatnak

Ezért a legtöbb esetben a C#-ban a szövegek összehasonlítása érték szerint történik.