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.