我知道可能之前已经提出过这个问题,但我似乎无法找到合适的解决方案(请记住,我不是C#专家,而是中级用户)...
我准备了一个基类,包括我的屏幕对象可能具有的动画状态的枚举(AnimationStates)(例如,士兵可能有不同的状态,而鸟可能有另一组状态..)..基类是服务于为我的动画屏幕对象存储更新方法和其他东西的目的(比如以相同的方式为它们设置所有动画)...基类中的枚举(自然)内部为空...我使用枚举编写的方法成员......
如果我通过“public new enum ...”在我的子课程中定义enum,我可以“继承”它......对吗?而且,有趣的是,我在基类中有一个字典,我试图将它从一个孩子(即士兵或鸟)传递到它的基础(动画对象)类...但我不能......
我觉得我做错了什么或遗失了......有什么想法吗?
答案 0 :(得分:3)
好吧,你不能直接使用C#中的枚举。
我建议采用更多面向对象的方法,并用真实对象替换枚举。这样,您可以在基类中定义接口IAnimationState
,并添加抽象方法getAnimationState()
。在屏幕对象类中,您只需实现此方法,返回接口IAnimationState
的一些特定实现。这样,您就可以将一些逻辑放入小动画状态类中,从而使您的项目更加模块化。
答案 1 :(得分:2)
您无法展开枚举。您可以在派生类中创建新的枚举,但它们是不同的。
我认为你应该只使用int常量。
答案 2 :(得分:0)
枚举类型表示一组简单的值。而已。你试图使用枚举作为类类型,因为它根本不适合账单。
只需创建一个枚举(如果你确实需要)并为复杂的操作制作一个“真实”类型。
enum SomeEnum { Foo, Bar }
class Whatever
{
public SomeEnum { get { return SomeEnum.Foo; } }
}
这个问题是developing a solution without really understanding the problem.的一个很好的例子,而不是提出你的解决方案,并要求我们找出最后20%没有任何意义的解决方案,告诉我们你实际想要完成什么。这里的某个人可能有一个你甚至没想过的更好的方法。