Sobes.tech
Junior

Kako se vrši poređenje nizova u C#? Da li se porede reference na nizove ili njihove vrednosti?

sobes.tech АИ

Одговор од АИ

U C#-u, nizovi su referentni tipovi, ali njihovo podrazumevano poređenje vrši se po vrednosti. Operator jednakosti (==) i metoda Equals porede sadržaj nizova, a ne reference na objekte u memoriji.

Za poređenje nizova po referenci, što je izuzetno retko, može se koristiti statička metoda ReferenceEquals.

Evo primera:

// Poređenje po vrednosti (podrazumevano)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true

// Poređenje po referenci
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, različiti objekti u memoriji

string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, referišu na isti objekat

Dakle, u većini scenarija, poređenje nizova u C# vrši se po vrednosti.