La concatenación: ¿Qué es?
Concatenar es poner algo uno tras otro, en programación, concatenamos palabras, cadenas como esto:
string maValeur = "Mi Valor 1";
maValeur = maValeur + ", Mi Valor 2";
maValeur = maValeur + ", Mi Valor 3";
//Lo que da:
//Mi Valor 1,Mi Valor 2,Mi Valor 3
Entonces es muy bien cuando solo tenemos una pequeña concatenación, pero cuando hacemos un bucle como este:
string maValeur = null;
//Un bucle de 100.000 concatenaciones
for(int i=0; i < 100000; i++)
{
maValeur = maValeur + ",Mi Valor " + i;
}
¡20 segundos y 768 milisegundos! (00:20.768) ¡A EVITAR! ¡Las prestaciones no son en absoluto óptimas!
¿Por qué?
Al utilizar este tipo de concatenación con cadenas, cada vez asignas espacio de memoria para cada cadena añadida, y además si deseas modificar o manipular esta variable, ¡no es nada eficiente! Microsoft sabiendo esto inventó el StringBuilder. String y Builder para construcción de cadenas.
El StringBuilder
El objeto StringBuilder se utiliza de manera muy simple:
StringBuilder maValeur = new StringBuilder();
//Un bucle de 100.000 concatenaciones
for(int i=0; i < 1000000; i++)
{
maValeur.Append("Mi Valor ").Append(i).Append(",");
}
¡Y Paf! ¡6 milisegundos! (00:00.006)
Como puedes notar, el objeto StringBuilder hace lo mismo pero 1000 veces más rápido y sin consumir demasiada memoria. Solo necesitas usar el método Append.
Además, el StringBuilder permite manipular la cadena como desees:
| Método | Descripción |
|---|---|
| StringBuilder.Append | Concatena un elemento cadena al final del valor ya contenido en el StringBuilder |
| StringBuilder.AppendFormat | Concatena un elemento cadena al final del valor ya contenido en el StringBuilder pero añadiendo la posibilidad de formatearlo con los índices {x} |
| StringBuilder.Insert(start, "Valor") | Agrega un elemento cadena en una posición precisa del valor ya contenido en el StringBuilder |
| StringBuilder.Remove(start, longitud) | Elimina un número de caracteres en el valor ya contenido del StringBuilder desde una posición precisa hasta cierta longitud. |
AppendFormat
Puedes utilizar el StringBuilder de la misma manera que utilizas el string.Format(), así:
StringBuilder maValeur = new StringBuilder();
int maLigne = 1000;
for(int i=0; i < 1000; i++)
{
maValeur.AppendFormat("Mi Valor {0} es el valor de la línea {1},", i, maLigne);
maLigne++;
}
Pasa al índice 0 -> i y al índice 1 -> maLigne
Insert
Para insertar precisamente otra cadena en el StringBuilder, nada más fácil:
StringBuilder maValeur = new StringBuilder();
maValeur.Append("Mi perro pasea en el jardín.");
maValeur.Insert(10,"y mi gata ");
maValeur.Insert(33,"nt");
//Resultado: Mi perro y mi gata pasean en el jardín.
Remove
Para eliminar caracteres, siempre igual de simple:
StringBuilder maValeur = new StringBuilder();
maValeur.Append("Mi perro pasea en el jardín.");
maValeur.Insert(10,"y mi gata ");
maValeur.Insert(33,"nt");
maValeur.Remove(35, 15);
//Resultado: Mi perro y mi gata pasean.
Acostúmbrate a usar el StringBuilder en lugar de concatenaciones de cadenas, ¡te ganarás en rendimiento, créeme!
Además, esto ha sido aprobado por Chuck Norris:

Aucun commentaire pour le moment.