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