我有一个包含以下两种方法的课程
class Foo
{
public async Task Perform(Func<Task> func)
{
await func();
}
public async Task Perform(Func<Task<bool>> func)
{
await func();
}
}
当我用funcs
调用方法时,一切都按预期工作await foo.Perform(async () => { /* */ }); // calls first method
await foo.Perform(async () => true); // calls second method
但是,如果我尝试使用方法委托调用第一个方法(Func<Task>
),我会收到以下编译错误:&#34; 预期带有Task ReturnTask()签名的方法&#34;
class Bar
{
public async Task Call()
{
var foo = new Foo();
await foo.Perform(ReturnTask); // compilation error
await foo.Perform(ReturnTaskOfBool); // works
}
private Task ReturnTask()
{
return Task.Completed;
}
private Task<bool> ReturnTaskOfBool()
{
return Task.FromResult(true);
}
}
为什么会这样?除了使方法的名称独特之外,还有什么方法吗?