Junior
Hoe worden strings vergeleken in C#? Worden de referenties naar strings vergeleken of hun waarden?
sobes.tech AI
Antwoord van AI
In C# zijn strings referentietypes, maar hun standaardvergelijking gebeurt op basis van waarde. De gelijkheidsoperator (==) en de Equals-methode vergelijken de inhoud van de strings, niet de referenties naar de objecten in het geheugen.
Om strings op referentie te vergelijken, wat zeer zelden voorkomt, kan de statische methode ReferenceEquals worden gebruikt.
Hier zijn voorbeelden:
// Vergelijking op waarde (standaard)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true
// Vergelijking op referentie
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, verschillende objecten in geheugen
string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, verwijzen naar hetzelfde object
Dus, voor de meeste scenario's wordt stringvergelijking in C# op waarde gedaan.