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

时间:2011-06-26 09:50:35

标签: .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代码或匿名方法)?

感谢

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

为什么还在使用.Net 2?你错过了很多很棒的改变,尤其是LINQ。

话虽如此,lambdas 不是.Net 3.5的一个功能,它们是C#3.0的一个功能,你可以在编译.Net 2.0时使用它,如果你真的需要这样做的话