假设我已经在异步方法中,并且将等待嵌套方法的结果:
var x = await CallMethodAsync();
然后,假设您可以选择通过以下两种方式之一编写CallMethodAsync:
public Task<int> CallMethodAsync() {
var y = DoStuff();
return _dependency.CallAnotherMethodAsync(y);
}
或:
public async Task<int> CallMethodAsync() {
var y = DoStuff();
return await _dependency.CallAnotherMethodAsync(y);
}
有区别吗?在CallMethodAsync方法定义中添加async / await语法是否有意义?
答案 0 :(得分:3)
差异是细微的,并且主要是在以下两者之间进行权衡:
CallAnotherMethodAsync
的异步部分CallMethodAsync
中更少的开销(分配等)就个人而言,如果所有以下条件,我倾向于在这里没有await
:
return [await]
是最后一个操作但这是一个稍微主观的情况。您的选择还可能取决于此代码路径的“热”程度。如果它是高吞吐量的IO循环,则可能避免使用await
;如果数量较少,请付出代价以获取更清晰的异常语义。