Ответ 1
Второй по-прежнему требует синтаксис лямбда:
Func<string> g = () => { return "Hello, world!"; };
Во-первых, вы эффективно пишете:
Func<string, string> f = (x) => { return "Hello, world!"; };
Но С# позволит вам отказаться от ()
при определении лямбда, если есть только один аргумент, позволяя вместо этого писать x =>
. Если аргументов нет, вы должны включить ()
.
Это указано в разделе 7.15 спецификации языка С#:
В анонимной функции с одним, неявным образом типизированным параметром круглые скобки могут быть опущены из списка параметров. Другими словами, анонимная функция формы
(param) = > expr
может быть сокращен до
param = > expr