Sobes.tech
Junior

Quais são as características da classe string em C#?

sobes.tech IA

Resposta da IA

A classe string em C# possui as seguintes características principais:

  1. Imutabilidade (Immutability): Após criar um objeto string, seu conteúdo não pode ser alterado. Qualquer operação que pareça modificar a string (por exemplo, concatenação) na verdade cria um novo objeto string.

    string s1 = "Hello";
    string s2 = s1 + " World"; // Um novo objeto `string` é criado para "Hello World"
    // O objeto s1 ainda contém "Hello"
    

    Isso torna as strings seguras para uso em ambientes multithread e simplifica seu uso como chaves em coleções, como Dictionary.

  2. Tipo de referência (Reference Type): Embora as strings frequentemente se comportem como tipos de valor devido à sobrecarga de operadores e comparação por valor, string é um tipo de referência.

    string a = "test";
    string b = a; // b referencia ao mesmo objeto "test" no heap
    string c = "test"; // Se a string "test" já estiver no pool de strings, c também fará referência a ela
    
  3. Sobrecarga do operador +: O operador + é sobrecarregado para concatenação de strings.

    string firstName = "John";
    string lastName = "Doe";
    string fullName = firstName + " " + lastName; // Concatenação de strings
    

    A concatenação múltipla usando + pode ser ineficiente devido à criação de objetos temporários. Para uma concatenação mais eficiente de muitas strings, recomenda-se usar StringBuilder.

  4. Pool de strings (String Interning): O ambiente de execução .NET possui um mecanismo chamado pool de strings que armazena literais de strings únicos definidos no código. Quando um literal de string é criado, o CLR verifica se essa string já existe no pool. Se sim, retorna uma referência ao objeto existente em vez de criar um novo.

    string str1 = "hello"; // "hello" é adicionado (ou já existe) no pool
    string str2 = "hello"; // str2 referencia o mesmo objeto no pool que str1
    Console.WriteLine(ReferenceEquals(str1, str2)); // Mostrará True
    

    Isso é uma otimização de memória.

  5. Amplo conjunto de métodos: A classe string fornece uma vasta gama de métodos para manipulação de strings, incluindo busca, substituição, formatação, alteração de maiúsculas/minúsculas e muito mais.

    string original = "  Hello, World!  ";
    string trimmed = original.Trim(); // Remoção de espaços nas extremidades
    string upper = original.ToUpper(); // Conversão para maiúsculas
    bool contains = original.Contains("World"); // Verificação de presença de uma substring
    
  6. Implementação de IEnumerable<char>: A string é essencialmente uma coleção de caracteres e implementa a interface IEnumerable<char>, permitindo percorrer os caracteres na string e usar LINQ.

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