Accueil
Articles
Astuces
Vidéos
Actualités
Auteurs
A propos
Contact
S'enregistrer
|
S'identifier
S'identifier
Authentification invalide
N
om d'utilisateur
M
ot de Passe
S
e souvenir de moi la prochaine fois.
S'identifier
Annuler
S'enregistrer
Mot de passe oublié ?
Les concaténations de chaines en C#
Nous allons voir au travers de cet article les différents types de concaténations de chaines en C#, comment elles sont optimisées par le compilateur afin de vous aider à choisir la meilleure solution en fonction de votre contexte.
Par
Patrice Lamarche
publié le 02/03/2010 à 14:24, lu 2480 fois, 6 pages
1 commentaire(s)
Tags:
ADO.NET
,
C#
3 | System.Text.StringBuilder
1 | Introduction
2 | Opérateur + et String.Concat()
3 | System.Text.StringBuilder
4 | StringBuilder VS String.Concat : Le match
5 | String.Format
6 | Conclusion
System.Text.StringBuilder
Comme indiqué précédemment le « problème » du type string est qu’il est immuable. Toute modification nécessite donc une nouvelle allocation afin de remplacer la valeur actuelle.
La classe StringBuilder permet à l’opposé du type string de représenter une chaine de caractère mais le type StringBuilder est un type muable. Il est donc possible de modifier une chaine sans avoir à réallouer et remplacer les précédentes valeurs.
Le principe d’allocation mémoire est proche de celui vu à propos de la description de la méthode Concat() : Le StringBuilder alloue une zone mémoire de taille fixe (16 caractères par défaut) et copie directement les caractères dans cette zone mémoire.
Comme on ne connait pas par avance la taille de la chaine de caractère finale contrairement à l’opération de concaténation via un String.Concat(), le StringBuilder alloue une taille fixe définie par la propriété Capacity (dont la valeur par défaut est de 16). A chaque fois que la taille de la chaine stockée par le StringBuilder le nécessite, la capacité du StringBuilder est doublée (ou plus si besoin) comme le montre l’exemple suivant :
Si vous connaissez par avance la taille de la chaine que vous allez avoir au final, vous pouvez donc optimiser la performance du StringBuilder en définissant vous-même la propriété Capacity.
L’instanciation d’un StringBuilder est couteuse en terme de performance, il faut donc dans la mesure du possible utiliser la même instance pour effectuer un lot d’opérations de modifications.
1
2
3
4
5
6
»
Démarrer une discussion
Quand le nombre de chaines, préférez concat
Chargement ...
Discussion démarée par
bleroy
le 03/03/2010 à 09:00, 1 commentaire(s).
Ecrire un commentaire
Titre
Commentaire
Annuler