2016-05-11 251 views
-1

有人请解释为什么我得到以下错误。以下代码仅用于演示目的。异步/等待不解开任务

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

回答

2

我想用的await会解开任务

它的确如此。 await DoStuff()返回string,而不是一个Task<string>,但由于该方法是一个async方法,该方法需要返回一个Task,所以它会包裹起来的返回值变成一个任务,意味着async x => await DoStuff()最终的结果是相同的,只是写x => Dostuff()你只是解开包装,然后重新包装你的礼物Task