String

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche

Zeichenketten, in der Regel als Strings bezeichnet, sind einer der am häufigsten verwendeten Datentypen in fast allen Programmiersprachen. In .NET hat der Datentyp string eine besondere Bedeutung, da es sich bei ihm um eine Art "Zwitter" handelt. Eigentlich ist string als Referenztyp definiert, er verhält sich aber nach außen wie ein Wertetyp. In .NET heißt die Basisklasse System.String.

Wird einer Variable vom Typ string ein Wert zugewiesen, wird intern im Heap der entsprechende Speicherplatz bereitgestellt. Der Wert wird nicht auf dem Stack gespeichert, wie sonst bei Wertetypen üblich. Außerdem ist ein String immutable. Das bedeutet, er ist unveränderlich. Sobald einmal ein Wert zugewiesen wurde, kann dieser intern nicht mehr verändert werden. Nach außen - also zum Programmierer hin - ist dies aber dennoch möglich. Was intern zum Beispiel beim Anhängen eines Strings an einen anderen String geschrieht, wird im folgenden deutlich:

  • Die Gesamtlänge des neuen Strings wird ermittelt.
  • Im Heap wird entsprechend Speicher reserviert.
  • Die Daten werden an diesen neuen Speicherplatz kopiert.
  • Die Referenz wird auf den neuen Platz im Heap umgelegt.

Bei jeder Änderung eines Strings wird intern eine Kopie des alten Strings erzeugt. Dies beeinflusst die Performanz. Es ist wichtig, diese Eigenschaft bei Performanz-Überlegungen mit einzubeziehen.