使用yield关键字实现简单的状态机as shown here是否可行。在我看来,C#编译器为您完成了艰苦的工作,因为它在内部实现了状态机以使yield语句正常工作。

您能否在编译器已经完成的工作上背负下来,并让它为您实现大多数状态机?

有没有人做过,从技术上讲有可能吗?

最佳答案

可行,但这是一个坏主意。创建迭代器块是为了帮助您为集合编写自定义迭代器,而不是为了解决实现状态机的通用问题。

如果要编写状态机,只需编写状态机。不难如果要编写很多状态机,请编写一个有用的帮助程序方法库,让您清晰地表示状态机,然后使用您的库。但是不要滥用旨在完全不同的语言构造,而恰恰是使用状态机作为实现细节。这使您的状态机代码难以阅读,理解,调试,维护和扩展。

(顺便说一句,在读你的名字时,我做了两遍。C#的一位设计师也叫Matt Warren!)

关于c# - 使用 “yield”关键字实现状态机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1194853/

10-10 21:13