This question already has answers here:
Does compiler perform “return value optimization” on chains of async methods
                                
                                    (2个答案)
                                
                        
                        
                            Any difference between “await Task.Run(); return;” and “return Task.Run()”?
                                
                                    (4个答案)
                                
                        
                                5年前关闭。
            
                    
假设我有一个叫做fooAsync()的方法:

public Task<T> FooAsync<T>(T foo, T bar)
{
    // do some stuff
    var returnFoo = await netLibraryMethodAsync(x, y, z);
    // do some more stuff
    return returnFoo as T;
}


现在,我有一个只做一件事call fooAsync()的waiter方法。

public Task<string> BarAsync(string foo, string bar)
{
    return this.FooAsync(foo, bar);
}


我的问题是:在BarAsync中,我应该使用return await this.FooAsync()还是return this.FooAsync(),为什么?

我尝试环顾四周,但没有找到这种模式的最终答案。

最佳答案

我在这里的问题是:在BarAsync中,我应该使用return等待this.FooAsync()还是返回this.FooAsync(),为什么?


您应该使用return FooAsync(foo, bar)。在这种情况下,除了调用另一个异步方法外,您没有做任何其他事情,因此,通过避免asyncawait可以避免少量的开销。

10-07 16:48