是否指定了异步/等待转换过程?

Mas*_*ler 7 .net c# asynchronous specifications

在C#中,将LINQ查询语法转换为实际执行代码的过程在语言规范的第7.16节中有详细描述,这使得语言开发人员可以使用它在新CLR上实现类似的查询语法.语言.

在C#版本5中添加的async/await语法是否有类似的详细规范?Eric Lippert关于该主题的博客文章之一显示某种情况下转换的前后观点,但实际上并未揭示任何有用细节层次的基本规则.这个规范是否存在于某个地方?

编辑:我可以看到在C#语言规范中有一个关于await表达式和异步函数的部分.但它并没有像LINQ部分那样进入与细节相同的任何细节.基本上我正在寻找的是一个流程描述,说"按照这些步骤将Eric帖子顶部的代码转换为帖子底部的状态机",这样语言设计人员就可以在不同的CLR语言并最终具有相同的语义.

Sin*_*nix 1

这似乎是一个实施细节,因为它往往会发生变化。例如,c#6 将在 catch/finally 子句中引入await(这里一般描述的想法)。

然而,一些关于如何在 c#5 中实现等待程序的深入细节。查看链接,尤其是这个:Async Codegen (ppt)。

这样语言设计者就可以用不同的 CLR 语言实现该功能并最终具有相同的语义

我建议查看 AsyncRewriter代码