Sobes.tech
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.