【问题标题】:Define an enum in C# that has all the values of an existing enum, and some additional values [duplicate]在 C# 中定义一个枚举,该枚举具有现有枚举的所有值,以及一些附加值 [重复]
【发布时间】:2019-07-18 09:48:24
【问题描述】:

考虑以下 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 从基础中挑选所有状态并添加一些额外的状态。

提前致谢。

【问题讨论】:

  • 您的示例代码中的DervState 在哪里?
  • 对不起,编辑了原文,DervState 是另一个枚举,代表派生类的状态。

标签: c# inheritance enums


【解决方案1】:

你不能从枚举继承,就是这样。想要这样做是非常可疑的。

枚举适用于当您从字面上枚举变量可能取的每个可能值的用例。想想一周中的几天或一年中的几个月或硬件寄存器的配置值等用例。既高度稳定又可以用简单值表示的事物。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2021-04-11
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多