StringBuilder Class In C# - Trickcode

System.String class,.NET,StringBuilder Class In C#
Share it:

StringBuilder Class In C#

T he System.String class can use the + operator to concatenate two strings. But this is inefficient when concatenating two different strings. The reason is that String objects in .NET are immutable, that is, the value cannot be changed once it is assigned to the string variable. When you concatenate another string to an existing one, you discard its old value and create a brand new string object which contains the result of the concatenation. Repeating this process several times leads to a performance penalty as new temporary objects will be created and old objects will be discarded.

Consider the following example, where you concatenate all the numbers from 0 to 9999;



int counter = 9999;
string s = string.Empty;

for (int i = 0; i <= counter; i++) 
{
   s += i.ToString();
}
Console.WriteLine(s);


You might see no problem just by looking at the code but if we use the Stopwatch object to time the operation, you can see how long it takes to do the operations. Modify the code as shown here:


int counter = 9999;
System.Diagnostics.Stopwatch sw =
   new System.Diagnostics.Stopwatch();
sw.Start();

string s = string.Empty;

for (int i = 0; i <= counter; i++) 
{
   s += i.ToString();
}

sw.Stop();
Console.WriteLine(s);
Console.WriteLine("Took {0} ms", sw.ElapsedMilliseconds);

We used the Stopwatch class’ Start() method to start the timer, and then proceed to the loop. After finishing the loop, we call the Stop() method of the Stopwatch class. On average, it took about 374 ms to run this application. Let’s now use the StringBuilder class in .NET to perform the string concatenation, using its Append() method and demonstrate the performance improvement:
int counter = 9999;
System.Diagnostics.Stopwatch sw =
   new System.Diagnostics.Stopwatch();
sw.Start();

StringBuilder sb = new StringBuilder();

for (int i = 0; i <= counter; i++) 
{
   sb.Append(i.ToString());
}

sw.Stop();
Console.WriteLine(sb.ToString());
Console.WriteLine("Took {0} ms", sw.ElapsedMilliseconds);

This time, it took about 3 ms to perform this operation. As you can see, the performance has improved dramatically. Performance can still be greater if the loop variant is increased. The StringBuilder is great if your concatenating strings with a large amount of text, such as the content of a document. The StringBuilder class contains some important methods, which are shown in the following table.


MethodDescription
AppendAppends the string representation of a specified object to the end of this instance.
AppendFormatAppends a formatted string, which contains zero or more format specifiers, to this instance. Each format specification is replaced by the string representation of the corresponding object argument.
AppendLineAppends the default line terminator, or a copy of a specified string and the default line terminator, to the end of this instance.
CopyToCopies the characters from a specified segment of this instance to a specified segment of a destination Char array.
InsertInserts the string representation of a specified object into this instance at a specified character position.
RemoveRemoves the specified range of characters from this instance.
ReplaceReplaces all occurrences of a specified character or string in this instance with another specified character or string.
ToStringConverts the value of a StringBuilder to a String.



                                              Share this article with your friends
Share it:

C#

StringBuilder Class In C#

Post A Comment:

0 comments: