.net - 将 Linq/Lambda 表达式转换为匿名方法

标签 .net linq lambda anonymous-methods

我通常会得到使用 lambda 表达式的代码示例。我还在使用 .net 2.0,并且发现很难使用这样的代码,例如

foreach(var item in items)
{
    var catCopy = item;
    foreach(var word in words)
    {
        var wordCopy = word;
        var waitCallback = new WaitCallback(state =>
        {
            DoSomething(wordCopy, catCopy);
        });

        ThreadPool.QueueUserWorkItem(waitCallback);
    }
}

如何将此类表达式转换为它的任何替代项(即非 lambda 代码或匿名方法)?

谢谢

最佳答案

C# 中的 lambda 表达式实际上只是一个委托(delegate)。鉴于您使用的是 .Net 2.0,您可以使用匿名方法动态定义委托(delegate),因此将代码行替换为:

var waitCallback = new WaitCallback(
                        delegate(object state) { 
                             DoSomething(workCopy, catCopy); 
                        });

关于.net - 将 Linq/Lambda 表达式转换为匿名方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483253/

相关文章:

c# - 将 2 个 foreach 循环减少到一个 linq 查询中

c# - 用于查找属性差异的 Lambda,反射在 C# 中未正确返回

c# - 释放临时 COM 对象

c# - USPS 费率计算器的回复

c# - 为国家、语言组合创建自定义 CultureInfo

c# - 如何使用 LINQ (.NET 4) 执行 DISTINCT 查询?

c# - Cosmos DB - ExecuteNextAsync 返回空对象

python - 使用 lambda 通过更改/修改旧列表来创建新列表

java - 我将如何组合 BiPredicate 和 Predicate?

.net - 类似谷歌金融的交互式图表控件的推荐