Junior
Comment la comparaison des chaînes se fait-elle en C# ? Les références aux chaînes ou leurs valeurs sont-elles comparées ?
sobes.tech IA
Réponse de l'IA
En C#, les chaînes sont des types de référence, mais leur comparaison par défaut se fait par valeur. L'opérateur d'égalité (==) et la méthode Equals comparent le contenu des chaînes, et non les références aux objets en mémoire.
Pour comparer des chaînes par référence, ce qui est très rare, on peut utiliser la méthode statique ReferenceEquals.
Voici des exemples :
// Comparaison par valeur (par défaut)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true
// Comparaison par référence
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, objets différents en mémoire
string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, pointent vers le même objet
Ainsi, pour la plupart des scénarios, la comparaison de chaînes en C# est effectuée par valeur.