Код: Выделить всё
private string getEstimatedWaypointStart()
{
return "id-1";
}
private string getEstimatedWaypointEnd()
{
return "id-2";
}
private void postVector()
{
//These don't compile
Task t1 = Task.Run(getEstimatedWaypointStart);
Task t2 = Task.Run(getEstimatedWaypointEnd);
//These works fine
Task t3 = Task.Run((Func)getEstimatedWaypointStart);
Task t4 = Task.Run(() => getEstimatedWaypointEnd());
/*do stuff*/
}
Код: Выделить всё
CS0121
The call is ambiguous between the following methods or properties: 'Task.Run(Func)' and 'Task.Run(Func)'
Код: Выделить всё
Func
Я не ищу обходного пути, поскольку лямбда-выражение работает нормально. Мне любопытно, есть ли объяснение такого поведения: почему компилятор видит делегата как Func, когда ключевое слово async вообще не используется? Это ошибка в моей текущей довольно старой версии C# (C# 7.3) или это ожидаемо? Если позже, стоит ли мне просто придерживаться лямбда-выражения?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -task-runf