Unterprogramme als Resultate

static int x = 3;	
static Func<int,int> s (int y) {
    return z => x + y + z;     
}
static void Main () {
    Func<int,int> p = s(4);
    Console.WriteLine (p(3));  
}

Wenn die von s(4) mathend000# konstruierte Funktion p mathend000# aufgerufen wird, dann wird der s mathend000#-Frame benötigt, steht aber nicht mehr im Stack.

mathend000# Die (Frames in den) Closures müssen im Heap verwaltet werden.



Johannes Waldmann 2014-03-31