De concatenatie: Wat is het?
Concateneren is iets aan elkaar plakken, in programmeren plakken we woorden, strings zoals dit:
string maValeur = "Mijn Waarde 1";
maValeur = maValeur + ", Mijn Waarde 2";
maValeur = maValeur + ", Mijn Waarde 3";
//Wat geeft:
//Mijn Waarde 1,Mijn Waarde 2,Mijn Waarde 3
Dus het is heel goed als we maar een heel kleine concatenatie hebben, maar als we een lus doen zoals dit:
string maValeur = null;
//Een lus van 100.000 concatenaties
for(int i=0; i < 100000; i++)
{
maValeur = maValeur + ",Mijn Waarde " + i;
}
20 seconden en 768 Milliseconden! (00:20.768) TE EVITEN! De prestaties zijn helemaal niet optimaal!
Waarom?
Bij het gebruik van dit soort concatenatie met strings, alloceert u elke keer geheugenruimte voor elke toegevoegde string, en bovendien, als u deze variabele wilt wijzigen of manipuleren, is het helemaal niet efficiënt! Microsoft, wetende dit, heeft de StringBuilder uitgevonden! String en Builder voor het bouwen van strings.
De StringBuilder
Het StringBuilder-object wordt heel eenvoudig gebruikt:
StringBuilder maValeur = new StringBuilder();
//Een lus van 100.000 concatenaties
for(int i=0; i < 1000000; i++)
{
maValeur.Append("Mijn Waarde ").Append(i).Append(",");
}
En Paf! 6 Milliseconden! (00:00.006)
Zoals u kunt zien, doet het StringBuilder-object hetzelfde, maar 1000 keer sneller en zonder te veel geheugen te verbruiken! U hoeft alleen de Append-methode te gebruiken.
Bovendien stelt de StringBuilder u in staat om de string te manipuleren zoals u wilt:
| Methode | Beschrijving |
|---|---|
| StringBuilder.Append | Voegt een string-element toe aan het einde van de waarde die al in de StringBuilder is opgeslagen |
| StringBuilder.AppendFormat | Voegt een string-element toe aan het einde van de waarde die al in de StringBuilder is opgeslagen, maar met de mogelijkheid om het te formatteren met de indices {x} |
| StringBuilder.Insert(start, "Waarde") | Voegt een string-element toe op een specifieke positie van de waarde die al in de StringBuilder is opgeslagen |
| StringBuilder.Remove(start, lengte) | Verwijdert een aantal tekens uit de waarde die al in de StringBuilder is opgeslagen, van een specifieke positie tot een bepaalde lengte. |
AppendFormat
U kunt de StringBuilder op dezelfde manier gebruiken als u string.Format() gebruikt, zoals dit:
StringBuilder maValeur = new StringBuilder();
int maLigne = 1000;
for(int i=0; i < 1000; i++)
{
maValeur.AppendFormat("Mijn Waarde {0} is de waarde van regel {1},", i, maLigne);
maLigne++;
}
U geeft index 0 -> i en index 1 -> maLigne door
Insert
Om precies een andere string in de StringBuilder in te voegen, is het heel eenvoudig:
StringBuilder maValeur = new StringBuilder();
maValeur.Append("Mijn hond wandelt in de tuin.");
maValeur.Insert(10,"en mijn kat ");
maValeur.Insert(33,"nt");
//Resultaat: Mijn hond en mijn kat wandelen in de tuin.
Remove
Om tekens te verwijderen, is ook heel eenvoudig:
StringBuilder maValeur = new StringBuilder();
maValeur.Append("Mijn hond wandelt in de tuin.");
maValeur.Insert(10,"en mijn kat ");
maValeur.Insert(33,"nt");
maValeur.Remove(35, 15);
//Resultaat: Mijn hond en mijn kat wandelen.
Raak gewend om de StringBuilder te gebruiken in plaats van string-concatenaties, u zult er prestatievoordelen mee behalen, geloof me!
Bovendien is dit goedgekeurd door Chuck Norris:

Aucun commentaire pour le moment.