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