Junior — Middle
Kann man eine Klasse innerhalb einer Funktion oder eines anderen Blocks deklarieren und sie im Stapelspeicher platzieren?
sobes.tech KI
Antwort von AI
In C# können lokale Klassen innerhalb von Methoden deklariert werden (ab C# 7), aber sie werden nicht auf dem Stack gespeichert, da Klassen Referenztypen sind und immer im verwalteten Heap platziert werden.
Für Wertetypen, die im Stack platziert werden können, werden Strukturen (struct) verwendet. Es ist jedoch nicht möglich, eine struct innerhalb einer Methode zu deklarieren — sie müssen auf Klassen- oder Namespacer-Ebene deklariert werden.
Beispiel für eine lokale Klasse innerhalb einer Methode:
void MyMethod() {
class LocalClass {
public int Value;
}
var obj = new LocalClass { Value = 10 };
}
Aber das Objekt obj wird im Heap platziert, nicht im Stack.