C# lambda 表达式的转换

标签 c# lambda

如何将下面的内容转换为lambda表达式?

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

最佳答案

你绝对可以将其写为 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");
    });

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

lambda 表达式只是语法糖,可用于表达匿名函数 - 编译器会将其转换为匿名函数或表达式树。

关于C# lambda 表达式的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794920/

相关文章:

python - 访问 geoseries 中几何图形中的行

c# - 如何在 C# 中使用 linq/lambda 获取数据副本而不是引用?

c# - 我可以将 Visual Studio 2012 Express Edition 用于商业用途吗?

python - 使用 Python/numpy 过滤 CSV 数据

c# - 带有时间戳字符串的 Json.NET (Newtonsoft) 的解析器发生了什么?

c# - C# 可以让我的类看起来像另一个类吗?

c# - 传递一个 Action 作为引用

c++ - 带有 std::function 参数的重载运算符

c# - 'clr-namespace' URI 指的是未包含在程序集中的命名空间

c# - 如何解决错误CS1525无效表达词 '='?