Junior
¿Cómo se comparan las cadenas en C#? ¿Se comparan las referencias a las cadenas o sus valores?
sobes.tech AI
Respuesta de la IA
En C#, las cadenas son tipos de referencia, pero su comparación por defecto se realiza por valor. El operador de igualdad (==) y el método Equals comparan el contenido de las cadenas, no las referencias a los objetos en memoria.
Para comparar cadenas por referencia, lo cual es muy raro, se puede usar el método estático ReferenceEquals.
Aquí hay ejemplos:
// Comparación por valor (por defecto)
string str1 = "hello";
string str2 = "hello";
bool areEqualByValue = (str1 == str2); // true
bool areEqualByEquals = str1.Equals(str2); // true
// Comparación por referencia
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, objetos diferentes en memoria
string strC = strA;
bool areEqualByReference2 = object.ReferenceEquals(strA, strC); // true, apuntan al mismo objeto
Por lo tanto, para la mayoría de los escenarios, la comparación de cadenas en C# se realiza por valor.