2015-09-20 3 views
1

Я читал о делегатах и ​​лямбда-выражениях, но этот код по-прежнему магия для меня.Понимание выражения лямбда

OnFailure FailureCallback(string failedFunction){ 
     return failureResponse => Console.Error.WriteLine("Failed to " + failedFunction + " due to: " + failureResponse.Message); 
    } 

Где OnFailure является делегат с подписью:

public delegate void OnFailure(FailureResponse failureResponse); 

И FailureResponse это класс, который преформ действия с ответом отказа.

Что делает «failResponse» появляется из ниоткуда при обратном вызове? Это не параметр и не объявлен нигде, но он используется как параметр для выражения лямбда.

ответ

1

Это объявление параметра для выражения лямбда. Это то же самое, что и x: someSequence.OrderBy(x => x.SomeProperty).

+0

О, и все? Первый параметр делегата делегата, а затем его использование для выражения лямбда? – BadVolt

+0

То есть, да. В этом конкретном синтаксисе это выглядит так необычно. В качестве упражнения вы можете использовать R # для преобразования лямбда в локальную переменную. Это будет очень очевидно, что происходит. Метод неверно назван, кстати. Его следует называть 'GetFailureCallback'. Может быть, это добавило путаницы. – usr

Смежные вопросы