枚举自定义对象?

Daf*_*esh 2 c# enums

我的目标是创建一个具有一定数量不同状态的"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只是整数的枚举.

有没有办法为枚举添加深度,或者我只是以错误的角度攻击这个问题?

rse*_*nna 5

已有很好的答案(@ 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,因为我不认为在这种情况下确实需要一个.