Wird beim Erfassen eines Werttyps in ein Lambda kopiert?

struct SomeStruct
{
    public int Num { get; set; }
}

class Program
{
    static Action action;

    static void Foo()
    {
        SomeStruct someStruct = new SomeStruct { Num = 5 };
        action = () => Console.WriteLine(someStruct.Num);
    }

    static void Main()
    {
        Foo();
        action.Invoke();
    }
}
Wird eine Kopie von someStruct erstellt, wenn das Lambda erstellt wird?Wird eine Kopie von someStruct erstellt, wenn Foo zurückkehrt?Kann ich sicherstellen, dass das Kopieren nicht erfolgt? In C ++ implementiere ich den Kopierkonstruktor und drucke aus ihm heraus.

Zitate aus dem Standard werden geschätzt. Auch alle relevanten Online-Artikel.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage