我与一些同事进行了讨论,对讨论感到困惑。所有人都说.NET框架每次编译后都会在称为“状态机”的状态中存储IL代码。但是据我所知,我不认为每次State Machine编译后都会出现。我在Google上进行了很多搜索,但没有找到了解State Machine概念的任何正当理由。是真的,当我们编译代码时,.Net框架总是将IL代码存储到“状态机”中吗?
请帮助。
IL代码不是并非总是被构造为状态机。具体而言,对于yield
,async
和await
公开的异步语义,生成了构造为状态机is的代码。除此之外,不会生成状态机,也不需要。但是,如果您对状态机进行编码,则假设优化不会更改所生成的IL代码的基础布局,则生成的IL代码很可能类似于状态机。