有人可以解释为什么我收到以下错误。以下代码仅供演示之用。
' System.Threading.Tasks.Task'不包含'修剪'
的定义
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>>
答案 0 :(得分:2)
我以为使用await会解开任务
确实如此。 await DoStuff()
返回string
,而不是Task<string>
,但由于该方法是async
方法,因此该方法需要返回Task
,因此它将换行将返回值提升到任务中,这意味着async x => await DoStuff()
的最终结果与仅写x => Dostuff()
相同。您只是解包然后重新包装礼物 Task
。