Cursus voor Beginners: De concatenatie

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.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙