c#重写枚举

我知道也许之前已经提出过这个问题,但我似乎无法找到合适的解决方案(请记住,我不是C#专家,而是中级用户)…

我准备了一个基类,包括用于我的屏幕对象可能具有的动画状态的枚举(AnimationStates)(例如,士兵可能有不同的状态,而鸟可能有另一组状态..)..基类正在服务于目的为我的动画屏幕对象存储更新方法和其他东西(比如以相同的方式动画所有这些)…基类中的枚举(自然)是内部空的..我有使用枚举成员编写的方法.. 。

如果我通过“public new enum …”在我的子课程中定义enum,我可以“inheritance”它……对吗? 而且,有趣的是,我在基类中有一个字典,我试图将它从一个孩子(即士兵或鸟)传递到它的基础(animatedobject)类……但我不能……

我觉得我做错了什么或遗失了……有什么想法吗?

你无法扩展枚举。 您可以在派生类中创建新的枚举,但它们是不同的。

我认为你应该只使用int常量。

好吧,你不能直接使用C#中的枚举。

我建议采用更多面向对象的方法,并用真实对象替换枚举。 这样,您可以在基类中定义接口IAnimationState ,并添加抽象方法getAnimationState() 。 在屏幕对象类中,您只需实现此方法,返回接口IAnimationState一些特定实现。 这样,您可以将一些逻辑放入小动画状态类中,从而使您的项目更加模块化。

枚举类型表示一组简单的值。 而已。 当它根本不适合账单时,你试图将枚举用作类类型。

只需创建一个枚举(如果你真的需要)并为复杂的操作制作一个“真实”类型。

 enum SomeEnum { Foo, Bar } class Whatever { public SomeEnum { get { return SomeEnum.Foo; } } } 

这个问题是在不真正理解问题的情况下开发解决方案的一个很好的例子。 而不是提出你的解决方案,并要求我们弄清楚最后20%没有任何意义,告诉我们你实际上想要实现的目标。 这里的某个人可能有一个你甚至没想过的更好的方法。