Przejdź do treści głównej
INF.04Języki i Składnia Programowania

Niezmienność String i Klasa StringBuilder

Obiekty typu string są niezmienne (immutable). Klasa StringBuilder służy do wydajnego łączenia i modyfikowania tekstu w pętlach bez alokowania setek zbędnych obiektów.

Dlaczego wielokrotna konkatenacja str += "..." jest nieefektywna?

Typ string jest niezmienny (immutable). Każde użycie operatora + w pętli alokuje w pamięci całkowicie nowy obiekt i kopiuje do niego dotychczasową zawartość, co prowadzi do złożoności O(n²) i obciążenia Garbage Collectora.

Rozwiązanie: StringBuilder (System.Text):

StringBuilder zarządza buforem znaków o dynamicznym rozmiarze, modyfikując dane w miejscu w czasie O(1) na operację.

CSHARP
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.Append(i).Append(", ");
}
string wynik = sb.ToString();

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Niezmienność String i Klasa StringBuilder lub rozpocznij trening.