Зачем нужны круглые скобки вокруг этой лямбда-функции?

return (Func<object, Task<object>>)(async (dynamic data) =>
{
    methodCall(data.data, data.more);
    return null;
});

Исходя из того, что я понял из приведенного выше кода, он явно приводит функцию лямбда-функции в качестве делегата, а затем возвращает этот делегат (в этом случае он возвращается к функции edgejs).

Когда парены удалены, из процесса сборки получено 8 ошибок.

Синтаксическая ошибка, ',' ожидается

; ожидаемый

} ожидается

Имя async не существует в текущем контексте

Имя динамического не существует в текущем контексте

Данные имени не существуют в текущем контексте

Данные имени не существуют в текущем контексте

Данные имени не существуют в текущем контексте

1 ответ

Решение

Вероятно, это потому, что async является контекстным ключевым словом, которое имеет особое значение только при появлении в качестве модификатора в методе или лямбда-сигнатуре. Без паренов, парсер думает async является именем метода, что приводит к ошибке, потому что компилятор не может найти метод с этим именем (и, кроме того, ошибка разбора на => потому что синтаксический анализатор больше не использует лямбда-выражение в этой точке).

Другие вопросы по тегам