Вызвать лямбду без создания делегата; вызывает CS0149 Ожидается имя методаC#

Место общения программистов C#
Ответить
Anonymous
 Вызвать лямбду без создания делегата; вызывает CS0149 Ожидается имя метода

Сообщение Anonymous »

Я хотел бы создать лямбда-выражение и немедленно вызвать его, и мне бы хотелось избежать создания делегата; тривиальный пример1:

Код: Выделить всё

int i = (() => 42)();
Это приводит к ошибке:


Ожидается имя метода CS0149


Есть два обходных пути:
Можно ли создать и сразу вызвать лямбда-выражение, не создавая делегата и не называя его? И если возможно, то как можно создать такую ​​лямбду?



1. На самом деле это асинхронная Task, которую я хотел бы использовать вместо Task.ContinueWith (я пытался следовать тому, что сказал Стивен Клири: вы должны стремиться заменить ContinueWith > с ожиданием); например:

Код: Выделить всё

Task future = (async () =>
(await RetrieveLookupFromFarAway())["42"].First())();
С помощью RetieveLookupFromFarAway что-то вроде:

Код: Выделить всё

async Task RetrieveLookupFromFarAway()
{
await Task.Delay(1000);
return Enumerable.Empty().ToLookup((x) => x.ToString());
}


Подробнее здесь: https://stackoverflow.com/questions/506 ... e-expected
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»