Своеобразное разрешение перегрузки с while (true)

Я реализовывал синхронные / асинхронные перегрузки, когда натолкнулся на эту особую ситуацию:

Когда у меня есть регулярное лямбда-выражение без параметров или возвращаемого значения, оно переходит кRun перегрузка сAction параметр, который является предсказуемым. Но когда эта лямбда имеетwhile (true) в нем идет перегрузка сFunc параметр.

public void Test()
{
    Run(() => { var name = "bar"; });
    Run(() => { while (true) ; });
}

void Run(Action action)
{
    Console.WriteLine("action");
}

void Run(Func<Task> func) // Same behavior with Func<T> of any type. 
{
    Console.WriteLine("func");
}

Выход:

действие
FUNC

Итак, как это может быть? Есть ли причина для этого?

Ответы на вопрос(1)

Ваш ответ на вопрос