我有一个在.NET 4.6.1上运行的ASP.NET应用。
我无法在等待的.Sum()
结果中使用GetInts()
。编译器认为GetInts()
是一项任务。 SumIntsOneLinerBroker()
无法编译。
public Task<List<int>> GetInts() {
var list = new List<int> { 4, 5 };
return Task.FromResult(list);
}
public async Task<int> SumInts() {
var ints = await GetInts();
return ints.Sum();
}
public async Task<int> SumIntsOneLinerBroker() {
return await GetInts().Sum();
}
public async Task<int> SumIntsOneLinerWorking() {
return (await GetInts()).Sum();
}
答案 0 :(得分:3)
有几种处理方法。最常见的可能是您在代码中显示并由Marc确认的括号。
另一种选择是.ContinueWith
,它使您可以将第一个操作的结果传递给第二个操作。这是Microsoft Example。请记住,当您使用ContinueWith
时,异常将被包裹在AggregateException
中,这会改变您的异常处理。
答案 1 :(得分:-1)
由马克(Marc)确认,如第二幅图所示,括号括起来的方法是正确的方法。这里没什么。