Junior — Middle
Може ли да се објави класа унутар функције или другог блока и да се стави у стек меморију?
sobes.tech АИ
Одговор од АИ
U C# možete deklarisati lokalne klase unutar metoda (počevši od C# 7), ali one se ne smeštaju na stek, jer su klase referentni tipovi i uvek se smeštaju u upravljani hrpu.
Za vrednosne tipove koji se mogu smeštati na stek, koriste se strukture (struct). Međutim, deklarisati struct unutar metode nije moguće — one moraju biti deklarisane na nivou klase ili prostora imena.
Primer lokalne klase unutar metode:
void MyMethod() {
class LocalClass {
public int Value;
}
var obj = new LocalClass { Value = 10 };
}
Ali objekat obj će biti smešten u hrpu, a ne na steku.