【问题标题】:Setting an enum as another enum within a C# class将枚举设置为 C# 类中的另一个枚举
【发布时间】:2016-11-30 16:25:48
【问题描述】:

我目前正在开发一个使用大量枚举的 C# 程序。它的组织方式是一个类包含许多枚举,并且这些类中有几个。但是,两者之间有几个枚举是相同的——出于组织目的,最好有一种“SharedEnums”类,然后执行以下操作:

public class FirstEnumCollection {
    public enum Fruits = SharedEnums.Fruits;
    //insert non-shared enums here
}

public class FirstEnumCollection {
    public enum Fruits = SharedEnums.Fruits;
    //insert non-shared enums here
}

public class SharedEnums { 
    public enum Fruits {
        Apple,
        Pear
    }
}

这样,我们不会在类中多次声明相同的枚举,并且更改共享枚举将更改两个类中的枚举。我已经尝试了我的示例的几种变体,但没有运气,我相当肯定它无法完成,但希望得到确认。

【问题讨论】:

  • 为什么不直接使用呢?
  • 你甚至不需要将枚举放在一个类中

标签: c# .net class enums


【解决方案1】:

enum 不需要“属于”某个类。您可以在任何类之外声明它:

public enum Fruits {
    Apple,
    Pear
}

然后在任何类中使用它。

【讨论】:

  • 该类旨在成为一种组织工具,而不是任何东西——所有枚举都在某个“MyEnums”命名空间中声明,每个类都表示枚举将在应用程序中使用的位置(我'这里的名字已经很琐碎了)。所以枚举永远不会直接在“FirstEnumCollection”中使用,而是被其他类使用。
  • 在这种情况下,没有必要使用类作为命名空间。这对于常量是必要的,但不是枚举。命名空间主要是为了这个目的而存在的。但主要是当您有两个具有相同名称的实体时,它们会消除歧义。但是,如果您有两个相同的枚举,并且您想将一个设置为等于另一个,则不需要它。只是增加了维护。最好只拥有一个。
【解决方案2】:

枚举可以在命名空间范围内定义,您不需要在类中创建枚举。您可以将枚举想象为结构或类,它是您可以在代码中使用的类型。所以,在命名空间范围内定义它

namespace MyCode
{
    public enum Days { M, T, W, T, F, Sa, Su }
}

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多