C# String vs StringBuilder (original) (raw)

Last Updated : 11 Jan, 2025

StringBuilder is used to represent a _mutable string of characters. Mutable means the string which can be changed. So String objects are immutable but StringBuilder is the mutable string type. It will not create a new modified instance of the current string object but do the modifications in the existing string object. The complete functionality of StringBuilder is provided by StringBuilder class which is present in System.Text namespace.

**Need of the StringBuilder: As stated above that the String class objects are immutable which means that if the user will modify any string object it will result into the creation of a new string object. It makes the use of string costly. So when the user needs the repetitive operations on the string then the need of StringBuilder come into existence. It provides the optimized way to deal with the repetitive and multiple string manipulation operations.

String vs StringBuilder

**Feature **String **StringBuilder
**Mutability Immutable (cannot be changed after creation) Mutable (can be changed without creating new objects)
**Performance Slower for frequent modifications Faster for frequent modifications
**Memory Usage Creates a new object for each modification Modifies the same object, reducing memory overhead
**Use Case Use for small or infrequently modified strings Use for large or frequently modified strings
**Modification Methods Modification requires creating a new string Modification is done in-place
**Thread Safety Strings are thread-safe StringBuilder is not inherently thread-safe

**Example: Demonstrating the differences between String and StringBuilder

C# `

// Difference between String Vs StringBuilder using System; using System.Text; using System.Collections;

class Geeks { // Concatenates to String public static void concat1(String s1) {

    // taking a string which 
    // is to be Concatenate 
    String st = "forGeeks"; 

    // using String.Concat method 
    // you can also replace it with 
    // s1 = s1 + "forgeeks"; 
    s1 = String.Concat(s1, st); 
} 

// Concatenates to StringBuilder 
public static void concat2(StringBuilder s2) 
{ 

    // using Append method 
    // of StringBuilder class 
    s2.Append("forGeeks"); 
} 

// Main Method 
public static void Main(String[] args) 
{ 

    String s1 = "Geeks"; 
    concat1(s1); // s1 is not changed 
    Console.WriteLine("Using String Class: " + s1); 

    StringBuilder s2 = new StringBuilder("Geeks"); 
    concat2(s2); // s2 is changed 
    Console.WriteLine("Using StringBuilder Class: " + s2); 
} 

}

`

Output

Using String Class: Geeks Using StringBuilder Class: GeeksforGeeks

**Explanation:

**Converting String to StringBuilder

To convert a String class object to StringBuilder class object, just pass the string object to the StringBuilder class constructor.

**Example:

C# `

// Conversion from String to StringBuilder. using System; using System.Text;

class Geeks { // Main Method public static void Main(String[] args) { String str = "Geeks";

    // conversion from String object 
    // to StringBuilder 
    StringBuilder sbl = new StringBuilder(str); 
    sbl.Append("ForGeeks"); 
    Console.WriteLine(sbl); 
} 

}

`

**Converting StringBuilder to String

This conversions can be performed using _ToString() method.

**Example:

C# `

// Conversion from String to StringBuilder using System; using System.Text;

class Geeks { // Main Method public static void Main(String[] args) {

    StringBuilder sbdr = new StringBuilder("Builder"); 

    // conversion from StringBuilder 
    // object to String using ToString method 
    String str1 = sbdr.ToString(); 

    Console.Write("StringBuilder object to String: "); 
    Console.WriteLine(str1); 
} 

}

`

Output

StringBuilder object to String: Builder