我的目标是创建一个具有一定数量不同状态的"GameState"类型.我希望它的行为几乎完全像枚举集,但我希望有多个整数作为数据.
举个例子,这就是我想要做的:
switch(this.gameState)
{
case(Wait):
if(elapsedTime > gameState.TimeOutTime)
//do stuff
break;
case(Play):
if(elapsedTime > gameState.TimeOutTime)
//do other stuff
break;
}
Run Code Online (Sandbox Code Playgroud)
因此,我只希望它包含TimeOutTime等变量以及有关该GameState的其他有用信息,而不是GameState只是整数的枚举.
有没有办法为枚举添加深度,或者我只是以错误的角度攻击这个问题?
已有很好的答案(@ Selman22,@ Max).
但我想他们缺少一个重要的信息:你应该不是在类型切换.请改用多态.
所以,根据你的例子,你应该使用这样的东西:
public abstract class GameState
{
public int TimeOutTime { get; set; }
public void CheckDoStuff()
{
if (elapsedTime > gameState.TimeOutTime) DoStuff();
}
protected abstract void DoStuff();
}
public WaitState : GameState
{
protected override DoStuff()
{
// Do stuff (wait)
}
}
public PlayState : GameState
{
protected override DoStuff()
{
// Do other stuff (play)
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我没有添加任何内容enum,因为我不认为在这种情况下确实需要一个.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |