2016-07-26 116 views
0

我目前正在研究一个利用相当数量的枚举的C#程序。它的组织方式使得一个类包含许多枚举,并且有几个这样的类。然而,一对夫妇枚举两者之间相同的 - 用于组织的目的,这将是很好,有一种“SharedEnums”类,然后做这样的事情:将枚举设置为C#类中的另一个枚举

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 
    } 
} 

这样一来,我们赢了” t在类之间多次声明相同的枚举,并且更改共享枚举将更改这两个类中的枚举。我已经尝试了几个我的例子的变体,但没有运气,我相当肯定它不能完成,但想要确认。

+5

为什么不直接使用它? – SLaks

+0

你甚至不需要把枚举放在一个类中 –

回答

5

enum不需要“属于”一个类。您可以在任何课程外申报:

public enum Fruits { 
    Apple, 
    Pear 
} 

然后在任何课程中使用它。

+0

这个类的目的是成为一个组织工具而不是任何东西 - 所有的枚举都在一些'MyEnums'命名空间中声明,每个类代表枚举的地方在应用程序中使用(我在这里简化了名称)。所以这个枚举永远不会直接在'FirstEnumCollection'中使用,而是被其他类使用。 – lionheartdamacy

+0

在这种情况下,不需要使用类作为名称空间。这对于常量而不是枚举是必要的。命名空间主要是为了这个目的而存在的。但主要是当你有两个具有相同名称的实体时,它们会消除歧义。但是,如果你有两个相同的枚举,并且你想设置一个与另一个相同的枚举,则不需要它。这只是增加了维护。最好只有一个。 –

1

枚举可以在命名空间范围内定义,您不需要在类中创建枚举。你可以想象一个像结构或类的枚举,这是一种你可以在代码中使用的类型。因此,在命名空间范围内定义它

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