Junior — Middle
Kan een klasse binnen een functie of een andere blok worden gedeclareerd en in het stackgeheugen worden geplaatst?
sobes.tech AI
Antwoord van AI
In C# kunnen lokale klassen binnen methoden worden gedeclareerd (vanaf C# 7), maar ze worden niet op de stack geplaatst omdat klassen referentietypen zijn en altijd in de beheerde heap worden geplaatst.
Voor waarde-typen die op de stack kunnen worden geplaatst, worden structs gebruikt. Het is echter niet mogelijk om een struct binnen een methode te declareren — ze moeten op het niveau van de klasse of namespace worden gedeclareerd.
Voorbeeld van een lokale klasse binnen een methode:
void MyMethod() {
class LocalClass {
public int Value;
}
var obj = new LocalClass { Value = 10 };
}
Maar het object obj wordt op de heap geplaatst, niet op de stack.