Junior — Middle
Hogyan van szervezve a String adatstruktúra a operatív memóriában?
sobes.tech MI
Válasz az MI-től
C#-ban a string egy változatlan (immutable) objektum, amely a memóriában UTF-16 kódolású karakterláncként van ábrázolva.
A String adattípus a memóriában a következőket tartalmazza:
- Egy objektum a kezelt heap-en, amely tartalmazza:
- Az objektum fejlécét (metaadatok a szemétgyűjtő és a típus számára).
- A karakterlánc hosszát tartalmazó mezőt (karakterek száma).
- Egy
char[]karaktertömböt, ahol minden karakter 2 bájt (UTF-16) helyet foglal.
Mivel a karakterláncok változatlanok, minden módosítás új objektum létrehozásával történik, míg a régi az emlékezetben marad, amíg a szemétgyűjtő nem takarítja ki.
Példa:
string s = "Példa";
// A memóriában s egy 6 hosszúságú objektumot tárol, amelyben a karakterek 'P','é','l','d','a'
Ezért a karakterlánc egy fix hosszúságú objektum, amely a biztonságos és hatékony használatra van optimalizálva a .NET-ben.