Зачем нужны круглые скобки вокруг этой лямбда-функции?
return (Func<object, Task<object>>)(async (dynamic data) =>
{
methodCall(data.data, data.more);
return null;
});
Исходя из того, что я понял из приведенного выше кода, он явно приводит функцию лямбда-функции в качестве делегата, а затем возвращает этот делегат (в этом случае он возвращается к функции edgejs).
Когда парены удалены, из процесса сборки получено 8 ошибок.
Синтаксическая ошибка, ',' ожидается
; ожидаемый
} ожидается
Имя async не существует в текущем контексте
Имя динамического не существует в текущем контексте
Данные имени не существуют в текущем контексте
Данные имени не существуют в текущем контексте
Данные имени не существуют в текущем контексте
1 ответ
Вероятно, это потому, что async
является контекстным ключевым словом, которое имеет особое значение только при появлении в качестве модификатора в методе или лямбда-сигнатуре. Без паренов, парсер думает async
является именем метода, что приводит к ошибке, потому что компилятор не может найти метод с этим именем (и, кроме того, ошибка разбора на =>
потому что синтаксический анализатор больше не использует лямбда-выражение в этой точке).