StringBuilder-Klasse

Stellt eine veränderbare Zeichenfolge dar. Diese Klasse kann nicht vererbt werden.

Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class StringBuilder
    Implements ISerializable
'Usage
Dim instance As StringBuilder
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class StringBuilder : ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class StringBuilder sealed : ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class StringBuilder implements ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public final class StringBuilder implements ISerializable

Hinweise

Diese Klasse stellt ein zeichenfolgenähnliches Objekt dar, dessen Wert eine veränderbare Zeichensequenz ist. Der Wert wird als veränderbar angesehen, da er geändert werden kann, sobald er erstellt wurde, z. B. durch Anfügen, Ersetzen oder Einfügen von Zeichen. Sehen Sie im Vergleich dazu die String-Klasse.

Die meisten Methoden, die eine Instanz dieser Klasse ändern, geben einen Verweis auf dieselbe Instanz zurück. Da ein Verweis auf die Instanz zurückgegeben wird, können Sie eine Methode oder Eigenschaft für den Verweis aufrufen. Dies erleichtert das Schreiben einer einzelnen Anweisung, mit der mehrere aufeinander folgende Vorgänge verkettet werden.

Die Kapazität eines StringBuilder umfasst die Höchstzahl von Zeichen, die von der Instanz zu einem bestimmten Zeitpunkt gespeichert werden können. Diese ist größer oder gleich der Länge der Zeichenfolgendarstellung des Werts der Instanz. Die Kapazität kann mit der Capacity-Eigenschaft oder der EnsureCapacity-Methode vergrößert bzw. verkleinert werden. Sie darf jedoch den Wert der Length-Eigenschaft nicht unterschreiten.

Wenn bei der Initialisierung einer Instanz von StringBuilder keine Kapazität oder die maximale Kapazität angegeben wird, werden implementierungsabhängige Standardwerte verwendet.

Leistungsaspekte

Die Concat-Methode und die AppendFormat-Methode verketten neue Daten mit einem bestehenden String-Objekt oder einem bestehenden StringBuilder-Objekt. Bei einem String-Objektverkettungsvorgang wird immer ein neues Objekt aus der bestehenden Zeichenfolge und den neuen Daten erstellt. Ein StringBuilder-Objekt verwaltetet einen Puffer, um die Verkettung von neuen Daten aufzunehmen. Neue Daten werden am Pufferende angefügt, wenn die entsprechende Kapazität verfügbar ist. Andernfalls wird ein neuer, größerer Puffer zugeordnet und die Daten aus dem ursprünglichen Puffer werden in den neuen Puffer kopiert. Die neuen Daten werden anschließend an den neuen Puffer angefügt.

Die Leistung eines Verkettungsvorgangs für ein String-Objekt oder ein StringBuilder-Objekt richtet sich nach der Häufigkeit der Speicherzuordnung. Bei einem String-Verkettungsvorgang wird immer Speicher zugeordnet; bei einem StringBuilder-Verkettungsvorgang wird hingegen nur Speicher zugeordnet, wenn der StringBuilder-Objektpuffer zu klein für die Aufnahme neuer Daten ist. Wenn eine feste Anzahl von String-Objekten verkettet wird, empfiehlt sich daher die Verwendung der String-Klasse für einen Verkettungsvorgang. Die einzelnen Verkettungsvorgänge können dabei vom Compiler sogar in einen einzigen Vorgang zusammengefasst werden. Wenn eine nicht festgelegte Anzahl von Zeichenfolgen verkettet werden soll, empfiehlt sich die Verwendung des StringBuilder-Objekts, z. B. bei einer Schleife, die eine beliebige Anzahl von Zeichenfolgen verkettet, die vom Benutzer eingegeben wurden.

Hinweise für Implementierer Die Standardkapazität für diese Implementierung ist 16, und der Standardwert für die maximale Kapazität ist Int32.MaxValue. Ein StringBuilder kann mehr Speicher als zum Speichern von Zeichen erforderlich reservieren, wenn der Wert einer Instanz vergrößert und die Kapazität entsprechend angepasst wird. Die reservierte Speichermenge ist von der Implementierung abhängig, und eine ArgumentOutOfRangeException wird ausgelöst, wenn die erforderliche Speichermenge die maximale Kapazität übersteigt. Beispielsweise können die Append-Methode, die AppendFormat-Methode, die EnsureCapacity-Methode, die Insert-Methode und die Replace-Methode den Wert einer Instanz vergrößern. Auf die einzelnen Zeichen im Wert eines StringBuilder kann über die Chars-Eigenschaft zugegriffen werden. Die Indexpositionen beginnen bei 0 (null).

Beispiel

Das folgende Codebeispiel zeigt, wie zahlreiche der von der StringBuilder-Klasse definierten Methoden aufgerufen werden.

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
using namespace System;
using namespace System::Text;

int main()
{
    // Create a StringBuilder that expects to hold 50 characters.
    // Initialize the StringBuilder with "ABC".
    StringBuilder^ sb = gcnew StringBuilder("ABC", 50);

    // Append three characters (D, E, and F) to the end of the
    // StringBuilder.
    sb->Append(gcnew array<Char>{'D', 'E', 'F'});

    // Append a format string to the end of the StringBuilder.
    sb->AppendFormat("GHI{0}{1}", (Char)'J', (Char)'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

Vererbungshierarchie

System.Object
  System.Text.StringBuilder

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

StringBuilder-Member
System.Text-Namespace
String