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.