Junior
Mi a különbség a referencia- és értéktípusok között?
sobes.tech MI
Válasz az MI-től
Az adatok tárolási és továbbítási módjában lévő különbségek:
-
Értéktípusok (Value Types):
- Közvetlenül ott tárolódnak, ahol deklarálva vannak (verem vagy értéktípus példányon belül).
- Érték hozzárendelése vagy érték szerinti átadás esetén másolat készül az értékről.
- Ide tartoznak primitív típusok (int, float, bool stb.), struktúrák (struct) és enumerációk (enum).
- Zártak (sealed) és nem örökölhetők.
-
Referencia típusok (Reference Types):
- A heapen tárolódnak. A változó nem az értéket, hanem a heapen lévő címre mutató hivatkozást tartalmaz.
- Érték hozzárendelése vagy átadása esetén csak a hivatkozás másolódik, nem az objektum.
- Ide tartoznak osztályok (class), interfészek (interface), delegáltak (delegate) és tömbök (array).
- Támogathatják az öröklődést.
- A szemétgyűjtő kezeli a referencia típusú objektumok memória felszabadítását, amelyekhez már nincs aktív hivatkozás.
// Értéktípus példája (struct)
struct Point
{
public int X;
public int Y;
}
// Referencia típus példája (class)
class Circle
{
public int Radius;
}
| Jellemzők | Értéktípusok | Referencia típusok |
|---|---|---|
| Tárolási hely | Verem vagy értéktípus példányon belül | Heap |
| Átadás/Assignálás | Érték másolata | Hivatkozás másolata |
| Öröklődés | Nem | Igen |
| Memóriakezelés | Automatikus (verem) | Gyűjtő (garbage collector) |