考虑以下C#代码:
enum BaseState {STATE_ONE, STATE_TWO}
class Base{ BaseState baseSate;}
enum DervState {STATE_ONE, STATE_TWO, STATE_THREE}
class Derv : Base { DervState dervState;}
有什么办法,我可以将两个枚举关联起来,以便DervState从基础中选择所有状态,并添加一些其他状态。
谢谢。
答案 0 :(得分:2)
您不能从枚举继承,就这样。想要这样做很可疑
枚举适用于用例,当您逐字地枚举变量可能采用的每个可能值时。考虑用例,例如一周中的几天或一年中的月份或硬件寄存器的配置值。既高度稳定又可以用简单值表示的事物。
当不同的enum
对应于具有不同行为但具有相同接口的不同类型时,枚举代码的气味最常发生。例如,与不同的后端交谈,渲染不同的页面等。使用多态类或其他结构可以更自然地实现这些功能。
简而言之,如果您需要这种工具,请查看可以更轻松地分离关注点的类,并封装功能或其他结构,例如字典或数组,甚至const。如果您确实需要enum
继承,请查看描述2种不同事物的2个单独的enum
,不要混用它们