尝试 return 导致自定义异步方法无法编译

Attempting to return result in custom async method doesn't compile

我一直在尝试制作一个可以等待的方法,即在 .NET 5 中异步。

根据我对异步的了解,这应该可行:

public Task<int> AsyncMethod()
{
    return 3;
}

当然这会立即 return 等待它是没有意义的,但问题是 Visual Studio 在“return”行给我一个错误该错误是“无法将类型 'int' 隐式转换为 'System.Threading.Tasks.Task'”,这看起来很奇怪,因为我认为这正是您应该做的。

如果我将 return 3 更改为 return Task.FromResult(3) 那么它可以工作,但我想知道为什么第一个不起作用并且这两个东西完全一样吗?

public Task<int> AsyncMethod()

表示此方法 returns 类型为 Task<int> 的值。这与您的 return 3 不匹配,因此导致错误。

要自动从 return 3 转换为 Task<int>,您需要将方法声明更改为:

public async Task<int> AsyncMethod()