Introdução ao O que é StringBuilder em C #

O artigo a seguir, O que é StringBuilder em C # fornece um esboço para o StringBuilder em C #. Antes de falar sobre o StringBuilder, vamos primeiro ver o conceito de imutabilidade, se você estiver familiarizado com as Strings, provavelmente saberá que as strings têm natureza imutável, isto é, toda vez que um novo objeto é criado e um novo local de memória é fornecido a ele e, portanto, sempre que dados Quando a mudança acontece, os dados alterados devem ser colocados no novo local da memória e mantendo a string original segura. Agora, vamos prestar pouca atenção. Qual é o caso de uso dessa abordagem? Bem, se você estiver configurando credenciais como detalhes do banco de dados, outras credenciais que não serão alteradas no tempo transitório, poderá usar String para mantê-las seguras. Agora existe outro tipo de objeto, o chamado StringBuilder, ou seja, mutável por natureza, economiza memória para você, permitindo modificar dados apenas no local atual da memória. Essas coisas são úteis quando você deseja ter várias operações de acréscimo no seu caminho.

Definição de StringBuilder em C #

StringBuilder é uma classe que representa um conjunto mutável de caracteres e é um objeto do System. Namespace de texto. StringBuilder é um objeto dinâmico na natureza e, portanto, o StringBuilder não cria um novo objeto na memória, mas expande dinamicamente a memória necessária para incorporar a nova ou modificada. Os construtores de strings não parecem convincentes em um ambiente de multithreading, pois podem resultar em inconsistência de dados quando escritos por vários threads, se o conceito de multithreading não for usado corretamente.

Noções básicas sobre StringBuilder

  1. Agora chega o momento em que se deve entender os resultados que a mutabilidade pode levar, você deve optar por usá-la apenas se o mesmo conjunto de dados se expandir dinamicamente. Vamos dar um exemplo para entender esse cenário.
  2. Se você estiver obtendo alguns dados de um formulário HTML que será armazenado em uma tabela com base em alguma lógica comercial, que primeiro validará os dados, nesse caso, você poderá criar um objeto StringBuilder e anexar todos os campos de dados, em associação com o colunas do banco de dados e, finalmente, pode executar uma consulta de inserção para colocar tudo isso no banco de dados, a vantagem dessa abordagem é que todo o tempo o novo local da memória não deveria ser alocado. E o C # gerenciará esse local de memória com expansão dinâmica para você.
  3. Você também pode especificar a capacidade numérica do StringBuilder em C #.
    StringBuilder s = novo StringBuilder (10);
    StringBuilder s = novo StringBuilder (“valor do objeto”, 15) ;.
  4. O StringBuilder. A propriedade Length indica o número de caracteres que o objeto StringBuilder contém atualmente. Se você adicionar caracteres ao objeto StringBuilder, seu comprimento aumentará até que seja igual ao tamanho do StringBuilder.

Como o StringBuilder em C # facilita o trabalho?

Existem certos métodos fornecidos no C #, o que facilita o trabalho com o StringBuilder. A classe StringBuilder fornece os seguintes métodos para facilitar a tarefa do desenvolvedor -

  • Anexar (String val) - é usado para anexar um valor de string de um objeto ao final do objeto StringBuilder atual.

Exemplo -

StringBuilder a = new StringBuilder(“val”, 10);
a.append(“us”) when you do console.writeline(a), it will give you result “value”

  • Anexar (Formato) - é usado para formatar a sequência de entrada no formato especificado e, posteriormente, anexá-la.

Exemplo -

StringBuilder a = new StringBuilder(“val”, 10);
a.appendFormat(“(0:C)”, 10)

Por favor, execute isso e analise a variação do que foi feito no método simples append ().

  • Inserir (índice int, valor da sequência) - insere a sequência no índice especificado no objeto StringBuilder.

Exemplo

StringBuilder a = new StringBuilder(“val”, 10); a.insert(4, ”ue”)

Execute e veja o resultado

  • Também existem outros métodos, e muitas variantes dos métodos mencionados acima, para aqueles, consulte:

Link: https://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder?view=netframework-4.8

O que você pode fazer com o StringBuilder?

  • O StringBuilder tem muitas propriedades, métodos e construtores para cuidar de problemas de codificação, como vimos o construtor StringBuilder (), existem variantes como StringBuilder (String, Int32, Int32, Int32) - isso inicializará uma nova instância da classe StringBuilder do substring mencionado e sua capacidade.
  • Existem propriedades como - comprimento, capacidade, capacidade máxima.
  • Existem métodos como - appendLine (), Equals (objeto), GetHashCode (), GetType (), Remove (int32, int32), Substitua (char, char), toString ().

Tudo isso cria uma tarefa para codificar problemas típicos de negócios com facilidade e com menor número de linhas de código.

Trabalhando com StringBuilder em C #?

  • A instanciação do objeto StringBuilder chamando o construtor StringBuilder (Int32, Int32) pode aumentar o tamanho e a capacidade da instância StringBuilder para além do valor da propriedade MaxCapacity. Principalmente isso pode acontecer quando você chama os métodos Append (String) e AppendFormat (String, Object) para acrescentar pequenas seqüências de caracteres.
  • Se o número de caracteres adicionados fizer com que o comprimento do objeto StringBuilder exceda sua capacidade atual, nova memória será alocada, o valor da propriedade Capacity será duplicado, novos caracteres serão adicionados ao objeto StringBuilder e a propriedade Length será ajustada.
  • Quando a capacidade máxima é atingida, não é possível qualquer alocação de memória adicional para o objeto StringBuilder e, em qualquer caso, a expansão além de sua capacidade máxima é executada, é provável que ela gere um dos dois erros mencionados.

- ArgumentOutOfRangeException.
- Exceção OutOfMemoryException.

Vantagens

  1. Não há vários locais de memória a serem tratados pelo C #.
  2. Expansão dinâmica de objetos até a capacidade.
  3. Pode ser convertido em String e vice-versa.

Por que devemos usar StringBuilder em c #?

  • Observa-se que a sequência segue as operações de concat e StringBuilder segue a operação de acréscimo e o acréscimo parece ser mais rápido que o concat, pois a concat precisa alocar um novo local de memória que não deve ser feito pelo StringBuilder.
  • Se os dados forem transitórios, ou seja, não permanentes e variarem entre chamadas diferentes, o StringBuilder poderá ser usado, desde que você esteja trabalhando sem multithreading, caso contrário, a segurança da thread será um problema.

Por que precisamos de StringBuilder em c #?

Bem, discutimos isso apenas nos pontos acima e podemos inferir aqui os casos de uso em que isso pode ser útil.

Conclusão

Portanto, vimos a diferença entre string e StringBuilder, quando usar quais e quais são os desafios ou exceções que podem aparecer ao trabalhar com os StringBuilders.

Artigos recomendados

Este foi um guia para O que é StringBuilder em C #? Aqui discutimos Definição, Compreensão, Trabalho em StringBuilder em C # com vantagens e exemplos: Como usar? Por que precisamos disso? e por que devemos usá-lo? Você também pode ler nossos outros artigos sugeridos para saber mais.

  1. StringBuffer vs StringBuilder
  2. C # if Instrução
  3. C # do-while loop
  4. Funções de seqüência de caracteres C #