Bonjour,
On sait que la classe StringBuilder est souvent utilsée à la place de la classe String lorsqu'on veut utiliser plusieurs manipulations des chaînes de caractères pour économiser les ressources. En effet, supposons qu'on veut avoir une grande chaîne de caractères par la concaténation de plusieurs sous-chaînes de caractères:
Sur la troisième ligne la référence ch1 pointe vers une nouvelle chaîne qui est "bonjour, comment ça va ?", et l'ancienne chaîne sera innaccessible, parce que String gére des chaînes de caractères immuables (non modifiables), et par la suite et à cause d'augmentation des chaînes innaccessibles on va consommer beaucoup des ressources. la solution c'est la StringBuilder qui gére les chaînes modifiables c-a-d on peut modifier la chaîne par concaténation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 string ch1="Bonjour, "; string ch2="comment ça va ?"; ch1+=ch2; ... ch3="Tu as des questions à poser...."; ch1+=ch3; . .. ...
Grâce à ça, on peut economiser les ressources.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 StringBuilder sb = new StringBuilder(capacity, maxCapacity); sb.Append(" Bonjour, "); sb.Append("comment ca va ?"); sb.Append("Tu as des questions à poser...."); . .. ...
Mais, ma question c'est: En cas d'utilisation des chaînes de caractères de la classe String, est-ce que le Garbage Collector ne supprime pas automatiqiement les chaînes innaccessibles? si oui : donc on n'a pas besoin de StringBuilder.
Merci d'avance de votre explication.
Partager