Junior — Middle
Lehet-e osztályt deklarálni egy függvényen belül vagy más blokkban, és azt a veremmemóriába helyezni?
sobes.tech MI
Válasz az MI-től
C#-ban lehet helyi osztályokat deklarálni metódusokon belül (a C# 7-től kezdve), de ezek nem kerülnek a veremmemóriába, mivel az osztályok referencia típusok, és mindig a kezelt heapen helyezkednek el.
Az értéktípusok számára, amelyek a veremben helyezhetők el, struktúrákat (struct) használnak. Azonban nem lehet struct-ot deklarálni egy metóduson belül — azoknak osztály vagy névtér szinten kell lenniük.
Példa helyi osztályra egy metóduson belül:
void MyMethod() {
class LocalClass {
public int Value;
}
var obj = new LocalClass { Value = 10 };
}
De az obj objektum a heapen lesz elhelyezve, nem a veremben.