«Строка неизменяема, а StringBuilder изменяем»
Неизменяемость строкового объекта означает, что если какая-либо из ваших операций с экземпляром строки изменяет его значение, это приведет к созданию нового экземпляра в другом месте адреса с измененным значением. Изменчивость StringBuilder прямо противоположна этому. Он не создаст новый экземпляр, когда их содержимое изменится, как строка. Вместо этого он вносит новые изменения в тот же экземпляр.
Используйте StringBuilder, если строка будет изменяться/манипулироваться много раз в течение ее срока службы.
Ex.
using System;
using System.Text;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
Stopwatch Mytimer = new Stopwatch();
string str = string.Empty;
Mytimer.Start();
for (int i = 0; i < 10000; i++)
{
str += i.ToString();
}
Mytimer.Stop();
Console.WriteLine("Time taken by string : {0}", Mytimer.Elapsed);
StringBuilder sbr = new StringBuilder(string.Empty);
//restart timer from zero
Mytimer.Restart();
for (int i = 0; i < 10000; i++)
{
sbr.Append(i.ToString());
}
Mytimer.Stop();
Console.WriteLine("Time taken by stringbuilder : {0}", Mytimer.Elapsed);
Console.ReadKey();
}
}
ссылка: https://www.c-sharpcorner.com/blogs/string-vs-stringbuilder-in-c-sharp
Первоначально опубликовано на randelramirez.wordpress.com 22 октября 2016 г.