«Строка неизменяема, а 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 г.