[英]Async/Await not unwrapping task
有人可以解释为什么我得到以下错误。 下面的代码仅用于演示目的。
'System.Threading.Tasks.Task'不包含'Trim'的定义
var items = Enumerable.Range(1, 10).Select(async x => await DoStuff());
var trimmedThings = items.Select(x => x.Trim());
public async Task<string> DoStuff() { //Do Stuff };
我以为使用await会解开任务,露出字符串,所以项的类型将是Enumerable<string>
而不是Enumerable<Task<string>>
我以为使用等待将解开任务
是的 await DoStuff()
返回一个string
,而不是Task<string>
,但是由于该方法是async
方法,因此该方法需要返回Task
,因此它将返回值包装到一个任务中,这意味着async x => await DoStuff()
的最终结果async x => await DoStuff()
与只编写x => Dostuff()
相同,您只需要x => Dostuff()
包装,然后重新包装礼物 Task
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.