A classe StringBuilder ainda continua sendo usada nessas novas versões do C#? Existe alguma outra biblioteca ou até mesmo outra classe que seja melhor do que essa ?
A classe StringBuilder ainda continua sendo usada nessas novas versões do C#? Existe alguma outra biblioteca ou até mesmo outra classe que seja melhor do que essa ?
Olá Marcelo, tudo bem?
Sim, a classe StringBuilder é utilizada ainda sim!
Você pode usar a concatenação também e em um cenário pequeno não há praticamente diferença nenhuma entre ambos, inclusive concatenando fica até mais fácil a leitura do código.
Agora, em um cenário complexo, onde há inúmeras concatenações, sim, você percebe que utilizando a classe StringBuilder é muito melhor.
A diferença é a forma como o código é executado internamente, pois uma string é imutável, então, para se trabalhar com ela, digamos, concatenar, é preciso criar uma nova string, então imagina fazendo isso milhares de vezes.
Se quiser fazer uma comparação para entender melhor, encontrei um link da própria Microsoft falando sobre o StringBuilder e um código de exemplo comparando ambos os métodos.
const int sLen=30, Loops=5000;
DateTime sTime, eTime;
int i;
string sSource = new String('X', sLen);
string sDest = "";
//
// Time string concatenation.
//
sTime = DateTime.Now;
for(i=0;i<Loops;i++) sDest += sSource;
eTime = DateTime.Now;
Console.WriteLine("Concatenation took " + (eTime - sTime).TotalSeconds + " seconds.");
//
// Time StringBuilder.
//
sTime = DateTime.Now;
System.Text.StringBuilder sb = new System.Text.StringBuilder((int)(sLen * Loops * 1.1));
for(i=0;i<Loops;i++) sb.Append(sSource);
sDest = sb.ToString();
eTime = DateTime.Now;
Console.WriteLine("String Builder took " + (eTime - sTime).TotalSeconds + " seconds.");
//
// Make the console window stay open
// so that you can see the results when running from the IDE.
//
Console.WriteLine();
Console.Write("Press Enter to finish ... ");
Console.Read();
Espero ter ajudado, e se estiver em dúvida ainda, pode perguntar!