Sobes.tech
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.