Подтвердить что ты не робот

С# лямбда-функции: возврат данных

Мне что-то не хватает или невозможно вернуть значение из лямбда-функции, например..

Object test = () => { return new Object(); };

или

string test = () => { return "hello"; };

Я получаю ошибку сборки. "Невозможно преобразовать лямбда-выражение для ввода" string ", потому что это не тип делегата".

Он, как этот синтаксис, назначает лямбду, а не результат лямбда, чего я не ожидал. Я могу достичь желаемой функциональности, назначив функцию Func и вызвав ее по имени, но это единственный способ?

Пожалуйста, нет, зачем вам это нужно? относительно мой пример.

Спасибо заранее!

4b9b3361

Ответ 1

Возможно, но вы пытаетесь назначить лямбда для string. - Вам нужно вызвать lambda:

Func<string> f = () => { return "hello"; };
string test = f();

Сообщение об ошибке на самом деле говорит все:

Невозможно преобразовать лямбда-выражение для ввода 'string'

... вот в чем проблема.

Если вы хотите использовать lambda inline, но действительно: почему? - вы тоже можете это сделать, вам просто нужно сделать это явно в делегате:

string test = (new Func<string>(() => { return "hello"; }))();