С# лямбда-функции: возврат данных
Мне что-то не хватает или невозможно вернуть значение из лямбда-функции, например..
Object test = () => { return new Object(); };
или
string test = () => { return "hello"; };
Я получаю ошибку сборки. "Невозможно преобразовать лямбда-выражение для ввода" string ", потому что это не тип делегата".
Он, как этот синтаксис, назначает лямбду, а не результат лямбда, чего я не ожидал.
Я могу достичь желаемой функциональности, назначив функцию Func и вызвав ее по имени, но это единственный способ?
Пожалуйста, нет, зачем вам это нужно? относительно мой пример.
Спасибо заранее!
Ответы
Ответ 1
Возможно, но вы пытаетесь назначить лямбда для string
. - Вам нужно вызвать lambda:
Func<string> f = () => { return "hello"; };
string test = f();
Сообщение об ошибке на самом деле говорит все:
Невозможно преобразовать лямбда-выражение для ввода 'string'
... вот в чем проблема.
Если вы хотите использовать lambda inline, но действительно: почему? - вы тоже можете это сделать, вам просто нужно сделать это явно в делегате:
string test = (new Func<string>(() => { return "hello"; }))();