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) |