任务和lambda表达式语法

Avi*_*ner 1 c# syntax lambda task-parallel-library

我是新手Tasks,仍在努力掌握这一概念.
虽然做了一些研究,我碰到这个文章与下面的代码:

Task<int32> t = new Task<int32>(n => Sum((Int32)n), 1000);
Run Code Online (Sandbox Code Playgroud)

从示例中,我了解到它1000是作为Sum函数的参数传递的,但我似乎并不理解语法.

我的问题是编译器如何知道它应该取代n1000当总和被称为?

Bol*_*ock 5

lambda的参数在lambda中表示为n之前的=>.也就是说n然后作为一个参数传递的Sum()被称为lambda表达式的主体内的方法.

如果我将lambda表达式重写为委托,那么对您来说可能更清楚:

Task<Int32> t = new Task<Int32>(
    delegate(Int32 n) { return Sum((Int32)n); }, 
    1000);
Run Code Online (Sandbox Code Playgroud)

它不会在编译时被替换,而是在运行时,一旦Task执行就被替换.