C#
- 6 maneiras de concatenar strings
![]() |
Neste artigo vou mostrar 6 formas diferentes de concatenar strings na linguagem C# e considerar qual o mais indicado. |
Antes de entrar na parte prática vamos recordar os conceitos sobre Strings na linguagem C#.
O tipo System.String (apenas string em C#) é um dos tipos mais importantes na plataforma .NET, sendo um dos tipos mais usados e mais mal interpretado. string é apenas um alias para o tipo String.
Não há diferença em desempenho ou na forma como o código é gerado. Ambas podem fazer as mesmas coisas, e todos os membros estão disponíveis em qualquer um deles, afinal assim se comporta um alias.
Diferenças úteis na utilização e escolha entre string ou String :
Afinal o que é uma String ?
Uma string é basicamente uma seqüência de caracteres. Cada caractere é um caractere Unicode no intervalo U+0000 a U+FFFF.
O tipo string tem as seguintes principais características:
Com esses conceitos em mente vejamos como podemos concatenar strings...
Recursos Usados:
Concatenando Strings
1- Usando o operador + |
O operador + pode funcionar como um operador unário ou binário.
Operadores + binários são predefinidos para tipos numéricos e para string. Para tipos numéricos, + calcula a soma de dois operandos.
using static System.Console;
namespace CShp_ConcatenandoStrings
{
class Program
{
static void Main(string[] args)
{
string s1 = "Macoratti .net " + "quase " + " tudo " + " para " + " .NET";
WriteLine(s1);
ReadKey();
}
}
}
|
Quando um ou os dois operandos forem do tipo string, + concatenará as representações de cadeia de caracteres dos operandos.
2- Usando o método Concact |
O método Concat concatena duas instâncias especificadas de string.
using static System.Console;
using System.Collections.Generic;
namespace CShp_ConcatenandoStrings
{
class Program
{
static void Main(string[] args)
{
IEnumerable<string> lista = new List<string>() { "Macoratti .net ", "quase ", " tudo", " para ", ".NET" };
string s2 = string.Concat(lista);
WriteLine(s2);
ReadKey();
}
}
}
|
O método apenas concatena as strings e não inclui nenhum delimitador.
3- Usando o método Join |
O método Join concatena todos os elementos de uma matriz de cadeia de caracteres usando o separador especificado entre cada elemento
using static System.Console;
namespace CShp_ConcatenandoStrings
{
class Program
{
static void Main(string[] args)
{
string s3 = string.Join(" ", "Macoratti .net", "quase", "tudo", "para", ".NET");
WriteLine(s3);
ReadKey();
}
}
}
|
O primeiro parâmetro é o separador que será adicionado entre os elementos de string individuais.
4- Usando a classe StringBuilder |
A classe oferece uma forma bem flexível de concatenar strings usando o método Append.
using static System.Console;
using System.Text;
namespace CShp_ConcatenandoStrings
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
sb.Append("Macoratti .net ").Append("quase ").Append(" tudo ").Append("para").Append(" .NET.");
string s4 = sb.ToString();
WriteLine(s4);
ReadKey();
}
}
}
|
A classe StringBuilder esta no namespace System.Text.
5- Usando o método String.Format |
O método String.Format converte o valor de objetos em cadeias de caracteres com base em formatos de especificado e as insere em outra cadeia de caracteres.
using static System.Console;
namespace CShp_ConcatenandoStrings
{
class Program
{
static void Main(string[] args)
{
string s5 = string.Format("{0} {1} {2} {3} {4}", "Macoratti .net ", "quase ", " tudo", " para ", ".NET");
WriteLine(s5);
ReadKey();
}
}
}
|
6- Usando o operador $ (C# 6.0) |
A partir da versão 6.0 da linguagem C# podemos reescrever o método usado no item anterior usando o operador $ na frente do código literal e do código C# entre os colchetes da seguinte forma:
using static System.Console;
namespace CShp_ConcatenandoStrings
{
class Program
{
static void Main(string[] args)
{
string p1 = "Macoratti .net";
string p2 = "quase";
string p3 = "tudo";
string p4 = "para";
string p5 = ".NET";
string s6 = $"{p1} {p2} {p3} {p4} {p5}";
WriteLine(s5);
ReadKey();
}
}
}
|
O resultado obtido será o mesmo mas o código é mais enxuto.
Agora a pergunta que não quer calar...
Qual o método mais eficiente para concatenar strings ?
Bem, ai
varia...
Usar a classe StringBuilder em geral é a forma mais indicada, principalmente quando você tem muitas strings para concatenar.
Quando você tem menos de 1000 strings para concatenar o método Concat é mais indicado. Para mais de 1000 strings use o StringBuilder.
Nota: O método Concat é ligeiramente mais rápido que o método Join. (basedo neste site: https://www.dotnetperls.com/string-concat )
Até o próximo artigo.
Pegue o
código do projeto aqui :
CShp_ConcatenandoStrings.zip
"E Jesus, tendo ouvido isto, disse-lhes:
Os sãos não necessitam de médico, mas, sim, os que estão doentes; eu não vim
chamar os justos, mas, sim, os pecadores ao arrependimento. "
Marcos 2:17
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a
Objetos com VB .NET
Strings - Um tratamento mais eficiente com Stringbuilder - Macoratti