c#重写枚举

本文关键字:枚举 重写 | 更新日期: 2023-09-27 18:11:11

我知道也许这个问题以前已经问过了,但我似乎找不到一个合适的解决方案(考虑到我不是c#专家,而是一个中等水平的用户)…

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

如果我在子类中通过"public new enum…"定义enum,我可以"继承"它。对吧?此外,有趣的是,我在基类中有一个字典,我试图将它从一个孩子(即士兵或鸟)传递到它的基类(animatedobject)…但是我不能……

我觉得我做错了什么或者错过了什么。有什么想法吗?

c#重写枚举

你不能在c#中直接使用枚举。

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

不能展开枚举。你可以在派生类中创建新的枚举,但是它们是不同的。

我认为你应该使用整型常量

枚举类型表示一组简单的值。就是这样。当枚举不符合要求时,您正在尝试使用枚举作为类类型。

只要创建一个enum(如果你确实需要),并为复杂的操作创建一个"真正的"类型。

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

这个问题是在没有真正理解问题的情况下制定解决方案的一个很好的例子。不要提出你的解决方案并要求我们找出最后20%没有任何意义的地方,告诉我们你真正想要完成的是什么。这里可能有人有一个更好的方法,你甚至没有想到。