Sobes.tech
Junior — Middle

È possibile dichiarare una classe all'interno di una funzione o di un altro blocco e inserirla nella memoria dello stack?

sobes.tech AI

Risposta dell'AI

In C# è possibile dichiarare classi locali all’interno di metodi (a partire da C# 7), ma queste non vengono collocate nella memoria dello stack, poiché le classi sono tipi di riferimento e vengono sempre allocate nell’heap gestito.

Per i tipi di valore che possono essere collocati nello stack, si usano le strutture (struct). Tuttavia, non è possibile dichiarare una struct all’interno di un metodo — devono essere dichiarate a livello di classe o di namespace.

Esempio di classe locale all’interno di un metodo:

void MyMethod() {
    class LocalClass {
        public int Value;
    }
    var obj = new LocalClass { Value = 10 };
}

Ma l’oggetto obj sarà allocato nell’heap, non nello stack.