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

Smi*_*ith 1 .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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何将这种表达式转换为任何替代方法(即非lambda代码或匿名方法)?

谢谢

Swa*_*nny 6

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

var waitCallback = new WaitCallback(
                        delegate(object state) { 
                             DoSomething(workCopy, catCopy); 
                        });
Run Code Online (Sandbox Code Playgroud)