Как я могу преобразовать этот пример делегата C # 2 в C # 3 лямбда-синтаксис? - PullRequest
0 голосов
/ 30 июля 2009

<ч /> У меня есть этот пример, где я конвертирую C # 2 пример делегата:

Predicate<string> predicate2 = delegate(string n)
{
    return n.StartsWith("J");
};
IList<string> namesWithJ2 = Tools.Filter(names, predicate2);
Tools.Dump(namesWithJ2);

до C # 3 Пример синтаксиса лямбды:

var filteredNames = Tools.Filter(names, n => n.StartsWith("J"));
Tools.Dump(filteredNames);
<Ч />

Но как мне преобразовать это в лямбда-синтаксис? В частности, как я могу получить два параметра (объекты s, аргументы DoWorkEventArgs), которые будут передаваться с использованием "=>"?

_worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
    BackgroundWorker worker = s as BackgroundWorker;
    for (int i = 0; i < 10; i++)
    {
        if (worker.CancellationPending)
        {
            args.Cancel = true;
            return;
        }

        Thread.Sleep(1000);
        worker.ReportProgress(i + 1);
    }
};

Ответы [ 2 ]

1 голос
/ 30 июля 2009

Контур формы

_worker.DoWork += (s, args) => {body of method};

Другая пунктуация, как рекомендует компилятор

1 голос
/ 30 июля 2009
_worker.DoWork += (s, args) => {
    ....
};

Или, если компилятор не может определить точные типы s и аргументов:

_worker.DoWork += (object s, DoWorkEventArgs args) => {
    ....
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...