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.