Sobes.tech
Junior

¿Cuáles son las características de la clase string en C#?

sobes.tech AI

Respuesta de la IA

La clase string en C# posee las siguientes características clave:

  1. Inmutabilidad (Immutability): Después de crear un objeto string, su contenido no puede ser cambiado. Cualquier operación que parezca modificar la cadena (por ejemplo, concatenación) en realidad crea un nuevo objeto string.

    string s1 = "Hello";
    string s2 = s1 + " World"; // Se crea un nuevo objeto string para "Hello World"
    // El objeto s1 todavía contiene "Hello"
    

    Esto hace que las cadenas sean seguras para su uso en entornos multihilo y simplifica su uso como claves en colecciones, como Dictionary.

  2. Tipo de referencia (Reference Type): Aunque las cadenas a menudo se comportan como tipos de valor gracias a la sobrecarga de operadores y comparación por valor, string es un tipo de referencia.

    string a = "test";
    string b = a; // b referencia al mismo objeto "test" en el montón
    string c = "test"; // Si la cadena "test" ya está en el pool de cadenas, c también referenciará esa instancia
    
  3. Sobrecarga del operador +: El operador + está sobrecargado para concatenar cadenas.

    string firstName = "John";
    string lastName = "Doe";
    string fullName = firstName + " " + lastName; // Concatenación de cadenas
    

    La concatenación múltiple usando + puede ser ineficiente debido a la creación de objetos temporales. Para una concatenación más eficiente de muchas cadenas, se recomienda usar StringBuilder.

  4. Pool de cadenas (String Interning): El entorno de ejecución .NET tiene un mecanismo llamado pool de cadenas que almacena literales de cadenas únicos definidos en el código. Cuando se crea un literal de cadena, CLR verifica si esa cadena ya existe en el pool. Si es así, devuelve una referencia al objeto existente en lugar de crear uno nuevo.

    string str1 = "hello"; // "hello" se añade (o ya existe) en el pool
    string str2 = "hello"; // str2 referencia al mismo objeto en el pool que str1
    Console.WriteLine(ReferenceEquals(str1, str2)); // Mostrará True
    

    Esto es una optimización de memoria.

  5. Amplio conjunto de métodos: La clase string proporciona una amplia gama de métodos para manipular cadenas, incluyendo búsqueda, reemplazo, formateo, cambio de mayúsculas/minúsculas y mucho más.

    string original = "  Hello, World!  ";
    string trimmed = original.Trim(); // Eliminación de espacios en los extremos
    string upper = original.ToUpper(); // Conversión a mayúsculas
    bool contains = original.Contains("World"); // Verificación de la presencia de una subcadena
    
  6. Implementación de IEnumerable<char>: La cadena en realidad es una colección de caracteres y implementa la interfaz IEnumerable<char>, lo que permite recorrer los caracteres en la cadena y usar LINQ.

    string text = "C#";
    foreach (char c in text)
    {
        Console.WriteLine(c);
    }