为什么不能将入口点标记为异步呢?

本文关键字:记为 异步 不能 入口 为什么 | 更新日期: 2023-09-27 17:51:15

有人知道为什么不可能将Main标记为异步吗?

我一直在设计编译器作为一个案例研究在过去,但我真的不能理解为什么不使Main异步?

为什么不能将入口点标记为异步呢?

在c#中,async关键字本质上只是允许你在代码中使用"await"关键字。如果没有等待,它只是同步执行。

如果有await关键字,则该方法阻塞直到"await "函数完成,并将控制权返回给调用者。然而,对于入口点函数,没有调用者(除了运行时,但您永远不会将控制权返回给它),因此使用await关键字实际上没有任何意义。

因为你不会在入口点函数中使用"await",所以也没有理由将其标记为async。c#恰好执行了这一点。

简短的回答是,你的入口点函数应该总是同步执行,因为它"是"你的程序(当然还有其他部分,但它们最终都以入口点开始和结束),所以async/await是不允许的。

async/await.