【发布时间】:2014-08-18 13:23:30
【问题描述】:
我有一个名为State的静态抽象类,它定义了抽象方法start()和update(),然后我有多个实现State的类。
现在我想创建一个类,我们称之为StateMachine,它有一个名为currentState 的属性。我希望能够将此属性设置为指向实现状态的静态类,这样我就可以运行 currentState.update() 之类的东西。
现在是我的问题:
房产的类型应该是什么?我会说状态,但我觉得还有更多的东西。另外,我将如何设置属性?是
currentState = ClassThatImplementsState;
一个有效的事情吗?
编辑:好的,所以我刚刚了解到您不能从 C# 中的静态类继承。我想知道一种做与此类似的事情的方法,它可以让我同时拥有多态性并且不必实例化状态对象。有这种事吗?
【问题讨论】:
-
c#中不能有静态抽象类
-
属性应该是
State -
您正在尝试实现状态机?很好,您可以使用相互递归函数(每个状态一个)来做到这一点 - 但通常都在同一个静态类中......
-
是的。我刚刚意识到静态类不能在 C# 中继承。还有更多的选择来实现我正在做的事情吗?我可以使用只有静态方法的非静态类吗?
-
不要使用静态类,也不要创建单例。他们愚蠢而烦人。至少在您了解静态类就像一个命名空间一样,用于保存 functions 而不是维护 state,并且只有在拥有多个有些东西会破坏它。
标签: c# static-class