Każdy obiekt typu String jest niezmienny. Oznacza to, że podczas edycji obiektu typu String, tworzony jest nowy obiekt wraz z uwzględnionymi zmianami a stary obiekt jest usuwany z pamięci. Z racji tego, że String jest typem referencyjnym, po edycji obiektu na stosie zmieniana jest referencja do obiektu utworzonego na stercie.

W przypadku pętli liczącej tysiące bądź setki tysięcy powtórzeń taka operacja przestaje być wydajna.

Wartość typu StringBuilder może być zmieniana dlatego właśnie ten typ powinien być używany w przypadku częstej zmiany wartości ciągu tekstowego. Dzięki temu operacje na ciągu tekstowym wykonywane będą szybciej i z większą wydajnością.

dependency 13-08-2018 01:48
brakuje mi tutaj informacji czym jest StringBuilder. klasa, struktura, typ prosty...?

ArunoxPl 27-08-2018 05:25
StringBuilder jest klasą dziediczącą po ISerializable. Klasa StringBuilder jest klasą publiczną ale nie można po niej dziedziczyć ponieważ posiada modyfikator typu seald.

Krzysztof_Siwiec 29-10-2021 12:02
marcin90 - prawdę rzeczesz! Mój test: 60k iteracji w stylu tekst.Append("ssssssssssssssssssssssssssssssssssssss"); tekst += "ssssssssssssssssssssssssssssssssssssss"; 0.0567 [sekund] vs 171,8739 [sekund] No i przyrost czasu jest geometryczny, jeśli nie logarytmiczny :-P


© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci