C # 类中的公共枚举

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

public class Card
{
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
...

我想在项目的其他地方使用它,但是如果不使用 Card.card _ suit 就无法做到这一点。有没有人知道 C # 中是否有声明这个的方法,这样我就可以声明

card_suits suit;

而不引用它所在的类?

177303 次浏览

目前,您的 enum嵌套在 Card类中。你所要做的就是将 enum的定义移出类:

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


public class Card
{
}

要指定:

之所以建议将名称从 card_suits改为 CardSuit,是因为微软的指导方针建议使用 Pascal Case for Enumerations,而单数形式在这种情况下更具描述性(复数形式意味着通过将多个枚举值放在一起来存储它们)。

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

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


public class Card
{
// ...

也就是说,您可能还需要考虑使用 枚举的标准命名准则,它将是 CardSuit 而不是 card _ suit,因为建议使用 Pascal Casing,并且枚举没有用 FlagsAttribute 旗帜属性标记,这表明在单个变量中使用多个值是合适的。

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

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


public class Card
{
...
}

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

只需在类定义之外声明它。

如果名称空间的名称为 X,则可以通过 X.card _ suit 访问枚举的值

如果您还没有为这个枚举定义名称空间,只需通过 card _ suit. Clubs 等调用它们。