状态机,使用什么代替枚举来存储多个状态,例如(车辆的驱动器底座高度为 0% 到 100%)
State machine, what to use instead of enum to store multiple states eg ( 0% to 100% for a vehicle's drive base height)
enum RideHeight_State
{
rideHeight = 100
}
我正在尝试使用 rideHeight 变量,就像它是一个 int 一样,方法是调用:
RideHeight_State.rideHeight -= 10; // Decrement rideHeight State by 10
稍后在私有 void 函数中...
有没有想过我哪里出错了?
谢谢
枚举本质上是相关的命名常量。您不能在运行时更改它们的值。如果你想要一个状态机,那么使用具有静态属性的 class。
听起来您可能需要这样做:
enum RideHeight_State
{
rideHeight,
}
private Dictionary<RideHeight_State, int> _state = new Dictionary<RideHeight_State, int>()
{
{ RideHeight_State.rideHeight, 100 },
};
那么这段代码可能会更像您预期的那样工作:
_state[RideHeight_State.rideHeight] -= 10;
Console.WriteLine(_state[RideHeight_State.rideHeight]);
输出 90
.
不过您的 enum
命名规则不是很清楚。我不确定在那里建议什么。
enum RideHeight_State
{
rideHeight = 100
}
我正在尝试使用 rideHeight 变量,就像它是一个 int 一样,方法是调用:
RideHeight_State.rideHeight -= 10; // Decrement rideHeight State by 10
稍后在私有 void 函数中...
有没有想过我哪里出错了?
谢谢
枚举本质上是相关的命名常量。您不能在运行时更改它们的值。如果你想要一个状态机,那么使用具有静态属性的 class。
听起来您可能需要这样做:
enum RideHeight_State
{
rideHeight,
}
private Dictionary<RideHeight_State, int> _state = new Dictionary<RideHeight_State, int>()
{
{ RideHeight_State.rideHeight, 100 },
};
那么这段代码可能会更像您预期的那样工作:
_state[RideHeight_State.rideHeight] -= 10;
Console.WriteLine(_state[RideHeight_State.rideHeight]);
输出 90
.
不过您的 enum
命名规则不是很清楚。我不确定在那里建议什么。