2016년 11월 9일 수요일

[c#] Closure Example2

static void Closures( ) {
Console.WriteLine(GetClosureFunction( )(30));
}

static Func GetClosureFunction( ) {
  int val = 10;
  Func internalAdd = x = > x + val;
    return internalAdd;
}


-------------

Console.WriteLine(GetClosureFunction( )(30)); 이부분을 보자.

GetClosureFunction( )(30)은

GetClosureFunction( )로 메소드는 끝이 나고,

Func internalAdd = x = > x + val; 을 리턴한다.

이때 이 internalAdd  는 메소드 안의 val 을 참조하기 때문에, 메소드가 끝났는데도, 이 메소드 안 val 가 살아 있는것이다.

댓글 없음:

댓글 쓰기