Middle
Szerkezeti tárgyak lehetnek a halomban?
sobes.tech MI
Válasz az MI-től
Nem, a struktúrák önmagukban érték típusok, és általában a veremben tárolódnak. Azonban, ha a struktúra egy referencia típus része (például egy osztály mezője), vagy be van csomagolva (boxing) olyan kontextusban, ahol objektumra van szükség (például, amikor egy object-et elfogadó metódusnak adjuk át), akkor a struktúra példánya a heap-en helyezkedhet el.
// Struktúra
public struct MyStruct
{
public int Value;
}
// Osztály, amely tartalmazza a struktúrát
public class MyClass
{
public MyStruct fieldStruct; // fieldStruct a heap-en van, mint a MyClass része
}
public static class Program
{
public static void Main()
{
MyStruct stackStruct = new MyStruct { Value = 10 }; // stackStruct a veremben
object boxedStruct = stackStruct; // boxedStruct (csomagolt struktúra) a heap-en van
MyClass heapObject = new MyClass();
heapObject.fieldStruct = new MyStruct { Value = 20 }; // heapObject és a mezője, a fieldStruct a heap-en van
}
}