Concatenação de strings de forma eficiente
Postado em 08. ago, 2011 por Kenji Kumakura em Tudo sobre Tecnologia
Sem dúvida você já ouviu dizer que concatenação de strings é uma operação custosa. Apesar do código aparentar modificar o conteúdo de uma string, na verdade você está criando um novo objeto string e deixando o velho objeto como lixo.
Exemplos:
string texto = "Olá, "; texto += usuario.Name; texto += ". Hoje é "; texto += System.DateTime.Now.ToString();
É tão ineficiente quanto:
string texto = "Olá, "; string tmp1 = new String( texto + usuario.Name ); string texto = tmp1; // "Olá, " agora é lixo. string tmp2 = new String( texto + ". Hoje é " ); texto = tmp2; // "Olá, <usuario>" agora é lixo. string tmp3 = new String( texto + DateTime.Now.ToString() ); texto = tmp3; // "Olá, <usuário>. Hoje é " agora é lixo.
As string tmp1, tmp2 e tmp3, e a string originalmente construída “texto” são todos lixo. O método += na classe string cria um novo objeto string e retorna aquela string. Ele não modifica a string existente concatenando os caracteres ao armazenamento original. Para concatenações simples como as vistas acima, você deve utilizar o método String.Format().
string texto = String.Format("Olá, {0}. Hoje é {1}", usuario.Name, DateTime.Now.ToString());
Para operações mais complexas você pode utilizar a classe StringBuilder. Evite-a se for utilizar com operações simples.
StringBuilder texto = new StringBuilder("Olá, "); texto.Append(usuario.Name); texto.Append(". Hoje é "); texto.Append(DateTime.Now.ToString()); string mensagem = texto.ToString();
Deixe um comentário
You must be logged in to post a comment.