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 |