在C#中定义一个枚举,该枚举具有现有枚举的所有值以及一些其他值

时间:2019-02-25 02:15:21

标签: c# inheritance enums

考虑以下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从基础中选择所有状态,并添加一些其他状态。

谢谢。

1 个答案:

答案 0 :(得分:2)

您不能从枚举继承,就这样。想要这样做很可疑

枚举适用于用例,当您逐字地枚举变量可能采用的每个可能值时。考虑用例,例如一周中的几天或一年中的月份或硬件寄存器的配置值。既高度稳定又可以用简单值表示的事物。

当不同的enum对应于具有不同行为但具有相同接口的不同类型时,枚举代码的气味最常发生。例如,与不同的后端交谈,渲染不同的页面等。使用多态类或其他结构可以更自然地实现这些功能。

简而言之,如果您需要这种工具,请查看可以更轻松地分离关注点的类,并封装功能或其他结构,例如字典或数组,甚至const。如果您确实需要enum继承,请查看描述2种不同事物的2个单独的enum,不要混用它们