Sobes.tech
Junior

Wat is het verschil tussen referentie- en waarde-types?

sobes.tech AI

Antwoord van AI

Verschillen in de manier waarop gegevens worden opgeslagen en overgedragen:

  • Value Types (Waarde Types):

    • Worden direct opgeslagen op de plek waar ze zijn gedeclareerd (op de stack of binnen een instantie van een waarde type).
    • Bij toewijzing of doorgeven op waarde, wordt een kopie van de waarde gemaakt.
    • Bevat primitieve types (int, float, bool, etc.), structs (struct) en enumeraties (enum).
    • Zijn sealed (afgesloten) en kunnen niet worden geërfd.
  • Reference Types (Referentie Types):

    • Worden opgeslagen in de heap. De variabele bevat niet de waarde zelf, maar een verwijzing naar het adres in de heap.
    • Bij toewijzing of doorgeven op waarde, wordt alleen de verwijzing gekopieerd, niet het object zelf.
    • Bevatten klassen (class), interfaces (interface), delegates (delegate) en arrays (array).
    • Kunnen overerving ondersteunen.
    • De garbage collector beheert het vrijmaken van geheugen voor referentie-objecten waar geen actieve verwijzingen meer naar zijn.
// Voorbeeld van een waarde type (struct)
struct Point
{
    public int X;
    public int Y;
}

// Voorbeeld van een referentie type (class)
class Circle
{
    public int Radius;
}
Kenmerk Value Types Reference Types
Opslaglocatie Stack of binnen een waarde type instantie Heap
Overdracht/Toewijzing Kopie van de waarde Kopie van de verwijzing
Overerving Nee Ja
Geheugenbeheer Automatisch (stack) Garbage collector