2
下面的代码提供错误CS0121,超载分辨率和异步等待
的调用以下方法或属性之间暧昧:“
RunTask(System.Func<System.Threading.Tasks.Task>)
”和“RunTask(System.Action)
”
static void RunTask(Func<Task> intTask)
{
}
static void RunTask(Action voidTask)
{
}
static async Task DoAsyncTask()
{
await Task.Delay(500);
}
public static void Main(string[] args)
{
var asyncTask = new Func<Task>(DoAsyncTask);
RunTask(DoAsyncTask);
}
但下面的代码可编译
static void RunTask(Func<Task> intTask)
{
}
static void RunTask(Action voidTask)
{
}
static async Task DoAsyncTask()
{
await Task.Delay(500);
}
public static void Main(string[] args)
{
var asyncTask = new Func<Task>(DoAsyncTask);
RunTask(asyncTask);
}
为什么这么说?
很公平,但为什么一个委托可以编译? – imgen
因为您已明确声明asyncTask的类型为Func,因此编译器很容易。 –
Moeri