Junior — Middle
Wat is het verschil tussen referentietypen en waardetypen in C# en wat zijn de belangrijkste verschillen in gebruik?
sobes.tech AI
Antwoord van AI
In C# worden de typen onderverdeeld in waarde types (value types) en referentie types (reference types).
Waarde types slaan de gegevens direct op. Voorbeelden: int, double, struct. Bij toewijzing of doorgeven aan een methode wordt de waarde zelf gekopieerd, dus wordt een onafhankelijke kopie gemaakt.
Referentie types slaan een verwijzing naar een object in het geheugen (de heap). Voorbeelden: class, string, arrays. Bij toewijzing wordt alleen de verwijzing gekopieerd, niet het object, dus meerdere variabelen kunnen naar hetzelfde object verwijzen.
Belangrijkste verschillen:
- Opslag: waarde types bevinden zich meestal op de stack, referentie types op de heap.
- Kopie: waarde types worden kopieer door waarde, referentie types door verwijzing.
- Gedrag bij wijziging: het wijzigen van een waarde type beïnvloedt andere kopieën niet, het wijzigen van een referentie object wordt op alle referenties weerspiegeld.
Voorbeeld:
int a = 5;
int b = a; // kopie van de waarde
a = 10; // a blijft 5
class Persoon { public string Naam; }
Persoon p1 = new Persoon { Naam = "Иван" };
Persoon p2 = p1; // kopie van de verwijzing
p2.Naam = "Пётр"; // p1.Naam wordt ook "Пётр"