请问C#包括有限状态机?(Does C# include finite state machines

2019-07-17 15:31发布

我最近读到有关boost::statechart库(有限状态机),我喜欢这个概念。

C#有类似的机制? 或者,可以在使用特定的设计模式来实现?

Answer 1:

是的,C#有迭代器块 ,其是编译器生成的状态机。

如果你想实现你自己的状态机,您可以创建自定义实现IEnumerable<T>IEnumerator<T>接口。

这两种方法都突出了.NET Framework的执行的迭代器模式 。



Answer 2:

现在.NET 4 Update 1支持它在下面的类: System.Activities.Statements.StateMachine

下面是一个关于如何使用它的教程 。 这里有一个手在实验室 。



Answer 3:

工作流基础(.NET 3.0)有一个状态机工作流。 4.0不具有完全相同目前同样的事情,但你绝对可以创建使用4.0状态机工作流。



Answer 4:

我维护它实现(除其他事项外)的通用有限状态机用于.NET的开源项目。 它是建立在之上QuickGraph ,让你得到很多图形分析算法是免费的。

请参阅此页 “了解有关该项目的更多信息,并明确:有限状态机Jolt.Automata有关功能的详细信息”。



Answer 5:

退房无状态- > http://code.google.com/p/stateless/ 。 它是一种轻量级替代较重WWF。

这里有一对夫妇,此工具的作者的文章:

在领域模型状态机

参数化触发器和重入国无状态



Answer 6:

那亲近的FSM的事情是在.NET 3.5的工作流程,然而,也工作流程是不完全的有限状态机。

利用有限状态机的功率是,你可以在你的代码中显式创建它们,有较少的错误创造机会。 此外,当然有些系统在本质上的有限状态机,所以它是更加自然,像这样的代码。



Answer 7:

Windows工作流基础(WF)是在3.0和3.5的基类库的一部分,包括状态机工作流设计管理国家机器为您的应用程序。

他们已经完全重写的工作流程为即将到来的4.0版本,而新的WF 4.0类本身并不支持状态机,但所有3.0 / 3.5类仍然完全在4.0的支持。



文章来源: Does C# include finite state machines?