C# lambda 表达式的转换

use*_*675 2 c# lambda

将以下内容转换为 lambda 表达式的方法是什么?

ThreadPool.QueueUserWorkItem(delegate
     {
        Console.WriteLine("Current Thread Id is {0}:",
         Thread.CurrentThread.ManagedThreadId);
        Console.WriteLine("I will be used as Callback");
      }
    );
Run Code Online (Sandbox Code Playgroud)

And*_*are 5

你绝对可以把它写成一个 lambda 表达式:

// The underscore is simply a placeholder for the "state"
// parameter that the WaitCallback delegate expects - you could
// use any character but you must specify one as lamba expressions cannot
// omit parameters like anonymous functions can.
ThreadPool.QueueUserWorkItem((_) =>
    {
        Console.WriteLine("Current Thread Id is {0}:",
        Thread.CurrentThread.ManagedThreadId);
        Console.WriteLine("I will be used as Callback");
    });
Run Code Online (Sandbox Code Playgroud)

但请记住,lambda 表达式在源代码之外没有任何意义。C# 编译器会将您的 lambda 表达式立即转换回您现在拥有的代码。

lambda 表达式只是一种语法糖,您可以使用它来表达匿名函数——编译器会将其转换为匿名函数或表达式树。