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