Sobes.tech
Junior

Kuo skiriasi nuorodos ir reikšmės tipai?

sobes.tech AI

Atsakymas iš AI

Skirtumai duomenų saugojimo ir perdavimo būduose:

  • Vertės tipai (Value Types):

    • Saugojami tiesiogiai ten, kur buvo deklaruoti (stakte arba viduje vertės tipo pavyzdžio).
    • Priskyrimo ar perdavimo pagal vertę metu, sukuriama vertės kopija.
    • Apima primitivių tipų (int, float, bool ir kt.), struktūrų (struct) ir išvardijimų (enum) tipus.
    • Yra uždaryti (sealed) ir negali būti paveldimi.
  • Nuorodų tipai (Reference Types):

    • Saugojami heap'e. Kintamasis turi ne pačią reikšmę, o nuorodą į heap'o adresą.
    • Priskyrimo ar perdavimo pagal vertę metu, kopijuojama tik nuoroda, ne pats objektas.
    • Apima klases (class), sąsajas (interface), delegatus (delegate) ir masyvus (array).
    • Gali palaikyti paveldėjimą.
    • Surinkėjas (garbage collector) valdo atminties laisvinimą, kai nėra aktyvių nuorodų į objektus.
// Pavyzdys vertės tipo (struct)
struct Point
{
    public int X;
    public int Y;
}

// Pavyzdys nuorodų tipo (class)
class Circle
{
    public int Radius;
}
Savybė Vertės tipai Nuorodų tipai
Saugojimo vieta Stakte arba viduje vertės tipo pavyzdžio Heap
Perdavimas/Priskyrimas Vertės kopija Nuorodos kopija
Paveldėjimas Ne Taip
Atminties valdymas Automatinis (stakas) Surinkėjas (garbage collector)