一个经过传递的异步方法真的需要 await/async 模式吗?
一个经过传递的异步方法真的需要 await/async 模式吗?
假设我有一个立即调用另一个异步方法的方法:\n
//主方法 public async TaskFoo1(int x) { var result = await DoingSomethingAsync(x); return DoSomethingElse(result); } //其他方法 public async Task Foo2(double double) { return await Foo1(Convert.ToInt32(double)); }
\n有没有任何特定的原因要求/应该在`Foo2`中使用`async/await`,而不是简单地调用:\n
//其他方法 public TaskFoo3(double double) { return Foo1(Convert.ToInt32(double)); }
\n在使用者端,不论如何都会等待,如下所示:\n
int x = await Foo1(1); int x = await Foo2(1D); int x = await Foo3(1D);
\n所有这些语句都会编译。编译器会为这两种不同的方法生成不同的中间语言(IL)吗?