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.