StringBuilder Class

Namespace: System.Text
Assembly: System.Runtime

Represents a mutable sequence of characters.

Summary

The StringBuilder class is used to create and modify strings. It is more efficient than the String class when you need to perform many modifications to a string, such as appending or inserting characters. This is because String objects are immutable, meaning that each modification creates a new string object. StringBuilder objects, on the other hand, are mutable, and their internal buffer is modified directly, reducing the overhead of memory allocation and garbage collection.

Inheritance

Base Type
Object
StringBuilder

Constructors

StringBuilder()

public StringBuilder()

Initializes a new instance of the StringBuilder class using the default capacity (16) and default comparer (`StringComparer.CurrentCulture`).

StringBuilder(int capacity)

public StringBuilder(int capacity)

Initializes a new instance of the StringBuilder class using the specified capacity and the default comparer (`StringComparer.CurrentCulture`).

Parameters

  • capacity: The initial size of the buffer, in characters.

StringBuilder(string value)

public StringBuilder(string value)

Initializes a new instance of the StringBuilder class to the specified value.

Parameters

  • value: The string to initialize the StringBuilder with.

Methods

Append(string value)

public StringBuilder Append(string value)

Appends the string representation of the specified value to this instance.

Parameters

  • value: The string to append.

Returns

  • A reference to this instance after the append operation has completed.

AppendLine(string value)

public StringBuilder AppendLine(string value)

Appends a copy of the specified string followed by the default line terminator to the end of this instance.

Parameters

  • value: The string to append.

Returns

  • A reference to this instance after the append operation has completed.

ToString()

public override string ToString()

Converts the current StringBuilder object to a string.

Returns

  • A string that represents the contents of this instance.

Clear()

public void Clear()

Removes all characters from the current StringBuilder instance.

Properties

Capacity

public int Capacity { get; set; }

Gets or sets the current capacity of the object.

Length

public int Length { get; set; }

Gets or sets the current length of the string builder.

Remarks

When you append characters or strings to a StringBuilder object, its internal buffer is resized if necessary. The capacity of the StringBuilder is the size of the internal buffer, in characters. The length of the StringBuilder is the number of characters it currently contains.

If the length of the StringBuilder exceeds its capacity, the capacity is increased. The new capacity is typically double the current capacity, but the exact resizing behavior can vary depending on the implementation.

Using StringBuilder is generally recommended over repeated concatenation of String objects, especially within loops, to improve performance and reduce memory pressure.

Examples

Example 1: Basic Usage

using System;
using System.Text;

public class Example
{
    public static void Main(string[] args)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("Hello");
        sb.Append(", ");
        sb.Append("World!");
        sb.AppendLine(); // Add a newline
        sb.Append("This is a test.");

        Console.WriteLine(sb.ToString());

        // Output:
        // Hello, World!
        // This is a test.
    }
}

Example 2: Using Capacity

using System;
using System.Text;

public class Example
{
    public static void Main(string[] args)
    {
        // Initialize with a capacity to avoid frequent reallocations
        StringBuilder sb = new StringBuilder(100);
        sb.Append("This string builder has an initial capacity of 100 characters.");
        
        Console.WriteLine($"Current Length: {sb.Length}");
        Console.WriteLine($"Current Capacity: {sb.Capacity}");
        Console.WriteLine(sb.ToString());
    }
}