2014-02-18 2 views
1

나는 Tasks을 처음 사용하며 여전히 개념을 파악하려고합니다.
I는 다음의 코드로 this 기사를 통해 온 몇 가지 조사하는 동안 :작업 및 람다 식 구문

Task<int32> t = new Task<int32>(n => Sum((Int32)n), 1000); 

의 예에서, 나는 1000Sum 함수에 인수로 전달되고 있음을 이해하지만 나는하지 않는 것 구문을 이해합니다.

제 질문은 컴파일러가 n1000으로 바꿔야한다는 것을 어떻게 알 수 있습니까?

답변

5

λ 파라미터는 => 앞에 λ으로 표시됩니다. 그런 다음 n은 λ 형식의 본문 내에서 호출되는 Sum() 메서드에 인수로 전달됩니다.

내가 대리자로 람다 식을 다시 작성하는 경우, 그것은 당신에게 명확 수 있습니다 다음 Task이 실행되면

Task<Int32> t = new Task<Int32>(
    delegate(Int32 n) { return Sum((Int32)n); }, 
    1000); 

는 그것은, 컴파일 시간에하지만 런타임에 대체되지 않습니다.

+0

감사합니다. 실수로 'Task (Func function, object state);의 오버로드를 놓쳤습니다. –