преобразование выражений Linq / Lambda в анонимные методы - PullRequest
1 голос
/ 26 июня 2011

Я обычно получаю примеры кода, которые используют лямбда-выражения.Я все еще использую .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);
    }
}

. Как мне преобразовать такое выражение в любой из его альтернатив (например, не лямбда-код или анонимные методы)?

спасибо

Ответы [ 2 ]

6 голосов
/ 26 июня 2011

Лямбда-выражение в C # на самом деле просто делегат. Учитывая ваше использование .Net 2.0, вы можете использовать анонимные методы для определения делегата на лету, поэтому замените строку кода на:

var waitCallback = new WaitCallback(
                        delegate(object state) { 
                             DoSomething(workCopy, catCopy); 
                        });
1 голос
/ 26 июня 2011

Почему вы до сих пор используете .Net 2?Вы пропускаете много больших изменений, особенно LINQ.

При этом лямбды не являются функцией .Net 3.5, они являются функцией C # 3.0, и вы можете использоватьчто при компиляции для .Net 2.0, если вам действительно нужно это сделать.

...