尝试 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()
我一直在尝试制作一个可以等待的方法,即在 .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()