Sobes.tech
Junior — Middle

É possível declarar uma classe dentro de uma função ou outro bloco e colocá-la na memória de pilha?

sobes.tech IA

Resposta da IA

No C# é possível declarar classes locais dentro de métodos (a partir do C# 7), mas elas não são colocadas na memória de pilha, pois as classes são tipos de referência e sempre são colocadas no heap gerenciado.

Para tipos de valor que podem ser colocados na pilha, usam-se estruturas (struct). No entanto, não é possível declarar um struct dentro de um método — eles devem ser declarados ao nível da classe ou do espaço de nomes.

Exemplo de uma classe local dentro de um método:

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

Mas o objeto obj será colocado no heap, não na pilha.