Maison >développement back-end >Tutoriel C#.Net >Quel est le but de la classe StringBuilder en C# ?

Quel est le but de la classe StringBuilder en C# ?

WBOY
WBOYavant
2023-09-09 16:53:02991parcourir

C# 中 StringBuilder 类的用途是什么?

En C#, les chaînes sont immuables. Cela signifie que la chaîne ne peut pas être modifiée une fois créée. Toute modification de la chaîne renvoie une nouvelle chaîne contenant les modifications, tandis que la chaîne d'origine reste inchangée.

string word = "aaabbbccc";
string newWord = word.Replace('b', 'd');
Console.WriteLine(word); // prints aaabbbccc
Console.WriteLine(newWord); // prints aaadddccc

La classe StringBuilder représente un objet semblable à une chaîne qui peut être modifié, c'est-à-dire une chaîne mutable. Il est implémenté différemment du type string, qui représente une chaîne immuable.

Étant donné que la modification d'un objet chaîne crée une copie, la modification répétée de l'objet chaîne peut entraîner une perte de performances. Pour les petites répétitions, cela est négligeable, mais pour les grandes boucles, cela peut être important. StringBuilder fournit une alternative efficace à la modification de chaînes en ajoutant, supprimant, remplaçant ou insérant des caractères.

StringBuilder maintient un tampon interne pour contenir les caractères. S'il y a de l'espace libre dans le tampon, de nouvelles données sont ajoutées. Sinon, il crée un nouveau tampon, copie les anciennes données dans le nouveau tampon, puis ajoute les données.

var sb = new StringBuilder();
for (int i = 0; i < 10; i++){
   sb.Append("a");
}
Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa

Voici les différentes manières de construire un objet StringBuilder.

// Initialize a new instance of StringBuilder
var sb1 = new StringBuilder();

// Initialize a new instance of StringBuilder using the given capacity
var sb2 = new StringBuilder(capacity: 10);

// Initialize a new instance of StringBuilder with the given string
var sb3 = new StringBuilder(value: "Hello World");

// Initialize a new instance of StringBuilder with the given capacity and the maximum capacity it can grow to
var sb4 = new StringBuilder(capacity: 20, maxCapacity: 10);

// Initialize a new instance of StringBuilder with the given string and capacity
var sb5 = new StringBuilder(value: "Hello", capacity: 20);

// Initialize a new instance of StringBuilder from the given substring and capacity
var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);

La classe StringBuilder a une propriété Longueur qui indique le nombre de caractères que possède actuellement l'objet. À mesure que de nouveaux caractères sont ajoutés à un objet, sa longueur augmente jusqu'à ce qu'elle atteigne sa capacité, qui définit le nombre maximum de caractères que l'objet peut actuellement contenir.

Si le nombre de caractères ajoutés fait dépasser la longueur de sa capacité actuelle, la classe alloue une nouvelle mémoire, couplant sa capacité. Le nouveau caractère est ensuite ajouté à l'objet et sa propriété Longueur est ajustée.

StringBuilder continue d'ajouter de la mémoire supplémentaire de manière dynamique jusqu'à ce que la valeur de la propriété MaxCapacity soit atteinte. Après cela, plus aucune mémoire ne peut être allouée à l’objet. Si vous essayez d'ajouter plus de données à l'objet, une exception ArgumentOutOfRangeException ou OutOfMemoryException est levée.

StringBuilder fournit les méthodes suivantes pour modifier facilement les chaînes.

  • Append - Ajoute la représentation sous forme de chaîne de l'objet spécifié à cette instance.

  • AppendFormat - Ajoute la chaîne renvoyée par le traitement d'une chaîne de format composée (contenant zéro ou plusieurs éléments de format) à cette instance. Chaque élément de format est remplacé par la représentation sous forme de chaîne du paramètre d'objet correspondant.

  • AppendJoin - Joint les objets de représentation sous forme de chaîne des éléments dans les tableaux fournis, en utilisant le délimiteur spécifié entre chaque membre, et ajoute le résultat à l'instance actuelle du générateur de chaîne.

  • AppendLine - Ajoute le terminateur de ligne par défaut à la fin de l'objet StringBuilder actuel.

  • Clear - Supprime tous les caractères de l'instance StringBuilder actuelle.

  • CopyTo - Copiez des caractères dans une plage de caractères cible ou un tableau de caractères.

  • EnsureCapacity - Garantit que la capacité de cette instance StringBuilder est au moins la valeur spécifiée.

  • Equals - Renvoie vrai si cette instance et l'instance fournie ont des valeurs de chaîne, de capacité et de capacité maximale égales.

  • GetChunks - Renvoie un objet qui peut être utilisé pour parcourir des morceaux de caractères.

  • Insérer - Insère la représentation sous forme de chaîne de l'objet spécifié dans cette instance à la position de caractère spécifiée.

  • delete - Supprime la plage de caractères spécifiée de cette instance.

  • Replace - Remplace toutes les occurrences du caractère ou de la chaîne spécifié dans cette instance par un autre caractère ou une chaîne spécifié.

  • ToString - Convertit l'instance actuelle en chaîne.

Exemple

Démonstration en direct

using System;
using System.Text;
class Program{
   static void Main(string[] args){
      string word = "aaabbbccc";
      string newWord = word.Replace(&#39;b&#39;, &#39;d&#39;);
      Console.WriteLine(word); // prints aaabbbccc
      Console.WriteLine(newWord); // prints aaadddccc
      var sb = new StringBuilder();
      for (int i = 0; i < 10; i++){
         sb.Append("a");
      }
      Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa

      // Initialize a new instance of StringBuilder
      var sb1 = new StringBuilder();

      // Initialize a new instance of StringBuilder using the given capacity
      var sb2 = new StringBuilder(capacity: 10);
     
      // Initialize a new instance of StringBuilder with the given string
      var sb3 = new StringBuilder(value: "Hello World");
      // Initialize a new instance of StringBuilder with the given capacity and the    maximum capacity it can grow to
      var sb4 = new StringBuilder(capacity: 20, maxCapacity: 50);
      // Initialize a new instance of StringBuilder with the given string and capacity
      var sb5 = new StringBuilder(value: "Hello", capacity: 20);

      // Initialize a new instance of StringBuilder from the given substring and capacity
      var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);
   }
}

Sortie

aaabbbccc
aaadddccc
aaaaaaaaaa

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer