Sobes.tech
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.