C#中的公共枚举

Pau*_*els 61 c# enums

我有一个程序,其中包含一个包含公共枚举的类,如下所示:

public class Card
{
    public enum card_suits
    {
        Clubs,
        Hearts,
        Spades,
        Diamonds
    }
...
Run Code Online (Sandbox Code Playgroud)

我想在我的项目的其他地方使用它,但是如果不使用Card.card_suit就不能这样做.有谁知道C#中有没有办法声明这个,以便我能够声明

card_suits suit;
Run Code Online (Sandbox Code Playgroud)

没有引用它所在的类?

Jus*_*ner 125

目前,您enum已嵌套在Card班级内.您所要做的就是移动类外的定义enum:

// A better name which follows conventions instead of card_suits is
public enum CardSuit
{
    Clubs,
    Hearts,
    Spades,
    Diamonds
}

public class Card
{
}
Run Code Online (Sandbox Code Playgroud)

指定:

从更名card_suitsCardSuit有人建议,因为微软的指南建议帕斯卡尔案例枚举和单数形式是在这种情况下更具描述性的(如复数会建议你通过或运算在一起存储多个枚举值).

  • 其他人提到CardSuit比CardSuit更受欢迎而没有解释原因.复数形式意味着它将是可以一起进行OR运算的标志的枚举. (11认同)
  • 您仍然可以在整个命名空间中访问它,只声明它一次. (4认同)

Ree*_*sey 25

您需要在类之外定义枚举.

public enum card_suits
{
    Clubs,
    Hearts,
    Spades,
    Diamonds
}

public class Card
{
     // ...
Run Code Online (Sandbox Code Playgroud)

话虽这么说,你可能还需要考虑使用的枚举的标准命名规则,这将是CardSuit代替card_suits,因为Pascal大小写建议,并枚举未标明的FlagsAttribute,提示多个值在一个适当变量.


Pau*_*sik 11

只需在类的边界之外声明枚举.像这样:

public enum card_suits
{
    Clubs,
    Hearts,
    Spades,
    Diamonds
}

public class Card
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

请记住,枚举是一种类型.您可能还会考虑将枚举放在自己的文件中,如果它将由其他类使用.(你正在编写一个纸牌游戏,而套装是卡片的一个非常重要的属性,在结构良好的代码中,需要被许多类访问.)