2014-02-12 4 views
1

У меня есть функция с этой подписью:Как работает эта лямбда-функция?

public DeleteCommand(IService service, 
    Func<bool> canExecute, Action<ContactModel> deleted) 

и код, который вызывает его:

Delete = new DeleteCommand(
       Service, 
       ()=>CanDelete, 

Я не понимаю, что ()=>CanDelete точно означает. Будучи Func<bool>, он должен вернуть некоторое значение.

()=> 

означает, что у него нет входных параметров. Но какое значение возвращается? почему нет return в лямбда? Что-то вроде ()=> return CanDelete?

ответ

9

Выражение лямбда, которое вы показали, возвращает результат выражения, следующего за =>. Ключевое слово return выведено и фактически не может быть явно включено. Заявление lambda (которое имеет вид () => { someStatements;}) делает не, выдает возвращаемое значение и требует явного return, если это не void.

+2

Или, другими словами (в надежде помочь пояснить), '() => CanDelete' означает'() => {return CanDelete; } '. – hvd

+0

Спасибо, вот что мне нужно знать. –

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