String, System.String e String Builder no C#

String, string ou StringBuilder? Para que servem e quando devemos utilizar cada um destes tipos no C#!

String ou string

Uma string no C# é uma cadeia de caracteres que representa um tipo de valor e pode armazenar até 1 bilhão de caracteres e 2GB de memória. Podemos inicializar uma string das seguintes formas.

// Cria uma string vazia 
// Receberá warning de possível referência nula a partir do .NET 6
string meuTexto;

// Cria uma string informando um valor inicial
string meuTexto = "valor";

// Cria uma string vazia
string meuTexto = string.Empty;

// ERRO
var meuTexto;

// Cria uma string informando um valor inicial
var meuTexto = "valor";

// Cria uma string vazia
var meuTexto = string.Empty;

// Cria uma string (Nula) que permite nulos
string? meuTexto;

Assim como nos outros tipos de valor, para permitir valores nulos em um string precisamos do ? após sua definição. Outro detalhe é o uso do string.Empty que define um valor vazio para uma string.

string? meuTexto;
string meuTexto = string.Empty;

É importante frisar que o string.Empty é apenas um sintax sugar para "", ambos tem o mesmo resultado e não influenciam na performance. A diferença é que em alguns cenário o string.Empty não é permitido por não ser considerado uma constante.

Qual a diferença entre String e string?

Tá bem, mas qual a diferença entre string e String? Por quê uma é minúscula e outra começa com letra maiúscula?

string meuTexto = "andre";
String umValor = "algum valor";

Embora string (Toda minúscula) seja a disparadamente a mais utilizada, o tipo correto para strings no C# é o System.String ou somente String, sim, S maiúsculo.

Todo tipo no .NET deriva do tipo base System e no caso das strings isto não é diferente. Desta forma, mantendo o padrão de todos os tipos no C#, a string tem seu namespace/tipo definidos como System.String.

O mesmo acontece com os tipos Int16 que é comumente chamado de short, Int32 que é chamado de int e Int64 que é chamado de long. Por conveção, toda classe/estrutura no .NET começa com letra maiúscula.

Então os tipos que usamos tanto, como short, int, string, bool, float, double não passsam de sintax sugar ou alias (Apelido) para os tipos reais no .NET.

Na prática o que isto muda?

Nada! Pode continuar utilizando seu string normalmente que para o compilador será tudo a mesma coisa, não vai afetar performance o qualquer outra coisa. É apenas algo estético.

Particularmente, acredito que muitos desses alias foram trazidos do C++, PHP e outras linguagens com sintaxe C LIKE, e por questões de harmonia foram mantidos. Tenho que concordar também que dá para contar nos dedos as vezes que usei String ao invés de string.

StringBuilder

Outro item que causa bastante confusão é o StringBuilder, mas ele age de forma bem diferente do string e String, ele tem a finalidade de concatenar strings, ou seja, juntar pedaços de textos em um texto maior.

É normal vermos o uso da concatenação de strings utilizando o operador de atribuição += do C#, o que pode não ter muito efeito negativo em cadeias de caracteres pequenas, mas em longos textos pode ser tornar um grande vilão.

var meuTexto = "Olá mundo";
meuTexto += " aqui vai mais um";
meuTexto += " e aqui mais um pedaço da string";

O que ocorre aqui é que para cada concatenação que fazemos deste modo, uma terceira variável é gerada, com conteúdo das anteriores se acumulando. Agora imagina este cenário com muitas concatenações?

Para isto, existe o StringBuilder, como o nome já diz, um "construtor de strings", feito sob medida para esta demanda de concatenação de textos.

var meuTexto = new StringBuilder();
meuTexto.Append("Olá mundo");
meuTexto.Append(" aqui vai mais um");
meuTexto.Append(" e aqui mais um pedaço da string");

Console.WriteLine(meuTexto.ToString());

No exemplo acima temos um código muito mais otimizado, utilizando o StringBuilder para construir um texto longo que é baseado em outras cadeias de caracteres. Notamos também que por se tratar de um objeto complexo, precisamos do método ToString() para imprimir o valor do texto composto na tela.

Interpolação de strings

É importante frisar que não devemos confundir a concatenação de strings com a interpolação de strings. Você pode usar a interpolação sempre que precisar, e uma das melhores formas é sinalizar isto ao compilador utilizando o $ antes da mesma.

var meuTexto = "Mundo";
var outroTexto = $"Olá {meuTexto}"

Curso de Fundamentos do C#

Quer aprender mais sobre C#? Então confere nosso curso Fundamentos do C#, que conta com mais de 100 aulas e 12.2 horas de conteúdo de forma simples, direta e objetiva.

CURSO FUNDAMENTOS DO C#

Conclusão

Embora seja algo fundamental, a criação e consumo de strings no C# pode ter suas pegadinhas e saber estes macetes pode salvar muito consumo de processamento e memória da sua aplicação, o que resulta em uma redução de custo de infraestrutura! Em suma, mais economia para o bolso da empresa!

Populares

Priority Queue

Priority Queue ou fila prioritária é um tipo de lista inclusa no C# 10 que permite que seus itens...


Implicit Operators no C#

Implicit Operators permitem adicionar comportamentos de conversão a objetos Built In ou complexos...


ASP.NET 5 – Autenticação e Autorização com Bearer e JWT

Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...


Clean Code - Guia e Exemplos

Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...


Git e GitHub - Instalação, Configuração e Primeiros Passos

Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...


Compartilhe este artigo



Conheça o autor

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.





2.344

Aulas disponíveis

230

horas de conteúdo

49.028

Alunos matriculados

33.606

Certificados emitidos





Comece de graça agora mesmo!

Temos mais de 17 cursos totalmente de graça e todos com certificado de conclusão.

Começar


Prefere algo mais Premium?

Conheça nossos planos



Premium semestral

Compra única, parcelada em até
12x no cartão de crédito


12x R$

38

,33

=R$ 459,90
  • 6 meses de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 51 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade

Premium anual

Compra única, parcelada em até
12x no cartão de crédito


12x R$

66

,65

=R$ 799,90
  • 1 ano de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 51 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade



Precisa de ajuda?

Dúvidas frequentes



  • Posso começar de graça?

    Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.

  • Vou ter que pagar algo?

    Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com certificado de conclusão, você não paga nada por eles.

    Porém, caso queira algo mais Premium , você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.

  • Por onde devo começar?

    Siga SEMPRE as nossas Carreiras , elas vão te orientar em todos os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu aprendizado.
    Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.

    • Backend
    • Frontend
    • Mobile

  • Os cursos ensinam tudo que preciso?

    Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.

  • O que eu devo estudar?

    Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe o básico?"

    Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus objetivos primeiro.
    Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta para tomar esta decisão seria:

    • Já sei o básico
    • O Framework/Tecnologia tem mercado onde eu estou (região)
    • O Framework/Tecnologia é utilizado em uma empresa onde quero atual
    • O Framework/Tecnologia resolve meu problema
    • Eu gosto de utilizar o Framework/Tecnologia

  • Estou pronto para estudar no balta.io?

    Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!

    Começar de graça

Ainda tem dúvidas?





Assine nosso Newsletter

Receba em primeira mão todas as nossas novidades.

Cadastrar


balta.io