异步/等待不打开任务

时间:2016-05-11 18:55:22

标签: c# asynchronous

有人可以解释为什么我收到以下错误。以下代码仅供演示之用。

  

' 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>>

1 个答案:

答案 0 :(得分:2)

  

我以为使用await会解开任务

确实如此。 await DoStuff()返回string,而不是Task<string>,但由于该方法是async方法,因此该方法需要返回Task,因此它将换行将返回值提升到任务中,这意味着async x => await DoStuff()的最终结果与仅写x => Dostuff()相同。您只是解包然后重新包装礼物 Task