Cette documentation est archivée et n’est pas conservée.

StringBuilder, classe

Représente une chaîne de caractères mutable. Cette classe ne peut pas être héritée.

Espace de noms : System.Text
Assembly : mscorlib (dans mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class StringBuilder : ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class StringBuilder implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public final class StringBuilder implements ISerializable

Cette classe représente un objet qui ressemble à une chaîne et dont la valeur est une séquence de caractères mutable. Cette valeur est dite mutable parce qu'elle peut être modifiée après sa création par ajout, suppression, remplacement ou insertion de caractères. Pour comparer, consultez la classe String.

La plupart des méthodes qui modifient une instance de cette classe retournent une référence à cette même instance. Dans la mesure où une référence à l'instance est retournée, vous pouvez appeler une méthode ou une propriété sur cette référence. Cela peut s'avérer pratique si vous voulez écrire une seule instruction qui enchaîne des opérations successives.

La capacité de StringBuilder est le nombre maximal de caractères que l'instance peut stocker à un moment donné ; ce nombre est supérieur ou égal à la longueur de la chaîne qui représente la valeur de l'instance. Il est possible d'augmenter ou de diminuer la capacité à l'aide de la propriété Capacity ou de la méthode EnsureCapacity, mais elle ne peut pas être inférieure à la valeur de la propriété Length.

Les valeurs par défaut spécifiques à l'implémentation sont utilisées si aucune capacité ou capacité maximale n'est spécifiée lors de l'initialisation d'une instance de StringBuilder.

Considérations sur les performances

Les méthodes Concat et AppendFormat concatènent toutes deux les nouvelles données en un objet String ou StringBuilder existant. Une concaténation d'objet String crée toujours un nouvel objet à partir de la chaîne existante et des nouvelles données. Un objet StringBuilder gère une mémoire tampon qui contient la concaténation des nouvelles données. Les nouvelles données sont ajoutées à la fin de la mémoire tampon, si l'espace nécessaire est disponible ; sinon, une nouvelle mémoire tampon, plus grande, est allouée, les données de la mémoire tampon d'origine sont copiées dans la nouvelle mémoire tampon, et les nouvelles données sont ajoutées à la nouvelle mémoire tampon.

La performance d'une opération de concaténation pour un objet String ou StringBuilder dépend de la fréquence à laquelle une allocation de mémoire a lieu. Une opération de concaténation String alloue toujours la mémoire, alors qu'une opération de concaténation StringBuilder alloue seulement la mémoire si la mémoire tampon de l'objet StringBuilder est trop petite pour contenir les nouvelles données. Par conséquent, la classe String est préférable pour une opération de concaténation si un nombre fixe d'objets String est concaténé. Dans ce cas, les opérations de concaténation individuelles peuvent même être combinées en une seule opération par le compilateur. Un objet StringBuilder est préférable pour une opération de concaténation si un nombre arbitraire de chaînes est concaténé; par exemple, si une boucle concatène un nombre aléatoire de chaînes d'entrées d'utilisateur.

Remarques à l'attention des implémenteurs La capacité par défaut pour cette implémentation est 16 et la capacité maximale par défaut est Int32.MaxValue. Si nécessaire, StringBuilder peut allouer plus de mémoire pour stocker les caractères lorsque la valeur d'une instance est augmentée et la capacité est modifiée en conséquence. La quantité de mémoire allouée est spécifique à l'implémentation et le système lève ArgumentOutOfRangeException si la quantité de mémoire requise est supérieure à la capacité maximale. Par exemple, les méthodes Append, AppendFormat, EnsureCapacity, Insert et Replace peuvent augmenter la valeur d'une instance. Les caractères dans la valeur de StringBuilder sont accessibles à l'aide de la propriété Chars. Les positions d'index commencent à zéro.

L'exemple de code suivant montre comment appeler la plupart des méthodes définies par la classe StringBuilder.

using System;
using System.Text;

public sealed class App 
{
    static void Main() 
    {
        // Create a StringBuilder that expects to hold 50 characters.
        // Initialize the StringBuilder with "ABC".
        StringBuilder sb = new StringBuilder("ABC", 50);

        // Append three characters (D, E, and F) to the end of the StringBuilder.
        sb.Append(new char[] { 'D', 'E', 'F' });

        // Append a format string to the end of the StringBuilder.
        sb.AppendFormat("GHI{0}{1}", 'J', 'k');

        // Display the number of characters in the StringBuilder and its string.
        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

        // Insert a string at the beginning of the StringBuilder.
        sb.Insert(0, "Alphabet: ");

        // Replace all lowercase k's with uppercase K's.
        sb.Replace('k', 'K');

        // Display the number of characters in the StringBuilder and its string.
        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());
    }
}

// This code produces the following output.
//
// 11 chars: ABCDEFGHIJk
// 21 chars: Alphabet: ABCDEFGHIJK

System.Object
  System.Text.StringBuilder

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Afficher: