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