Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中定义一个枚举,该枚举包含现有枚举的所有值和一些附加值_C#_Inheritance_Enums - Fatal编程技术网

在C#中定义一个枚举,该枚举包含现有枚举的所有值和一些附加值

在C#中定义一个枚举,该枚举包含现有枚举的所有值和一些附加值,c#,inheritance,enums,C#,Inheritance,Enums,考虑以下C#代码: 有没有办法,我可以将这两个枚举关联起来,以便DervState从基中选取所有状态,并添加几个额外的状态 提前感谢。您不能从枚举继承,仅此而已。想要这样做是非常可疑的 枚举适用于您逐字枚举了变量可能获取的所有可能值的用例。考虑一些用例,比如一周中的几天或一年中的几个月,或者硬件寄存器的配置值。高度稳定且可由简单值表示的事物 当不同的Enum对应具有不同行为但具有相同接口的不同类型时,最常发生枚举代码气味。例如,与不同的后端对话、呈现不同的页面等等。这些都是使用多态类或其他结构更

考虑以下C#代码:

有没有办法,我可以将这两个枚举关联起来,以便DervState从基中选取所有状态,并添加几个额外的状态


提前感谢。

您不能从枚举继承,仅此而已。想要这样做是非常可疑的

枚举适用于您逐字枚举了变量可能获取的所有可能值的用例。考虑一些用例,比如一周中的几天或一年中的几个月,或者硬件寄存器的配置值。高度稳定且可由简单值表示的事物

当不同的
Enum
对应具有不同行为但具有相同接口的不同类型时,最常发生枚举代码气味。例如,与不同的后端对话、呈现不同的页面等等。这些都是使用多态类或其他结构更自然地实现的


简而言之,如果您需要这种功能,请查看可以更轻松地分离关注点并封装功能或其他结构(如字典或数组,甚至常量)的类。如果您确实需要
enum
继承,请查看两个单独的
enum
s,它们描述了两种不同的东西,不应该将它们混合在一起。

您不能从一个enum继承,就是这样。想要这样做是非常可疑的

枚举适用于您逐字枚举了变量可能获取的所有可能值的用例。考虑一些用例,比如一周中的几天或一年中的几个月,或者硬件寄存器的配置值。高度稳定且可由简单值表示的事物

当不同的
Enum
对应具有不同行为但具有相同接口的不同类型时,最常发生枚举代码气味。例如,与不同的后端对话、呈现不同的页面等等。这些都是使用多态类或其他结构更自然地实现的


简而言之,如果您需要这种功能,请查看可以更轻松地分离关注点并封装功能或其他结构(如字典或数组,甚至常量)的类。如果您确实需要
enum
继承,请查看两个单独的
enum
s,它们描述了两种不同的东西,不应该将它们混合在一起。

示例代码中的
DervState
在哪里?抱歉,编辑了原始的,DervState是另一个enum,表示派生类的状态。示例代码中的
DervState
在哪里?抱歉,编辑了原始的,DervState是另一个枚举,表示派生类的状态。
enum BaseState {STATE_ONE, STATE_TWO}

class Base{ BaseState baseSate;}

enum DervState {STATE_ONE, STATE_TWO, STATE_THREE}

class Derv : Base { DervState dervState;}