C# | String vs StringBuilder

Prerequisite: String in C#

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.

Example:



filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate the
// difference between String,
// StringBuilder
using System;
using System.Text;
using System.Collections;
  
class GFG {
    // 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);
    }
}

chevron_right


Output:

Using String Class: Geeks
Using StringBuilder Class: GeeksforGeeks

Explanation:

  • Use of concat1 Method: In this method, we are passing a string “Geeks” and performing “s1 = String.Concat(s1, st);” where st is “forGeeks” to be concatenated. The string passed from Main() is not changed, this is due to the fact that String is immutable. Altering the value of string creates another object and s1 in concat1() stores reference of the new string. But the references s1 in Main() and concat1() refer to different strings.
  • Use of concat2 Method: In this method, we are passing a string “Geeks” and performing “s2.Append(“forGeeks”)” which changes the actual value of the string (in Main) to “GeeksforGeeks”. This is due to the simple fact that StringBuilder is mutable and hence changes its value.

When to use which one:

  • If a string is going to remain constant throughout the program, then use String class object because a String object is immutable.
  • If a string can change (example: lots of logic and operations in the construction of the string) then using a StringBuilder is the best option.

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:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate the
// conversion from String to StringBuilder.
using System;
using System.Text;
  
class GFG {
  
    // 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);
    }
}

chevron_right


Output:

GeeksForGeeks

 
Converting StringBuilder to String:
This conversions can be performed using ToString() method.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to demonstrate the
// conversion from String to StringBuilder
using System;
using System.Text;
  
class GFG {
  
    // 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);
    }
}

chevron_right


Output:

StringBuilder object to String: Builder


My Personal Notes arrow_drop_up

Believes in Smart Work

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

4


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.