Вы пытаетесь делегировать переменную в вызове метода.Можно просто удалить объявление переменной:
public static void Main(string[] args)
{
Task.Factory.StartNew(() => Console.WriteLine("etc."));
}
Здесь Action
выводится не из самого лямбда-выражения, а из вызова метода, который он пытается сделать.Выполняется нормальное разрешение перегрузки, и компилятор пытается преобразовать лямбда-выражение в соответствующий тип параметра.Если бы тип параметра был просто Delegate
(например, Control.Invoke
), тогда вывод типа не удался бы, потому что у компилятора не было бы каких-либо конкретных целевых типов, чтобы попытаться преобразовать в.
Если это не работает (Я не могу легко протестировать его.) Тогда вам просто нужно привести его к типу делегата, в который должно быть преобразовано лямбда-выражение:
public static void Main(string[] args)
{
Task.Factory.StartNew((Action)(() => Console.WriteLine("etc.")));
}
Если честно, в этот момент я бы предпочелчтобы увидеть отдельную переменную с точки зрения читабельности.