C#中的公共枚举

时间:2010-03-29 19:56:09

标签: c# enums

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

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

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

card_suits suit;

没有引用它所在的类?

6 个答案:

答案 0 :(得分:119)

目前,您的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,因为Microsoft指南建议使用Pascal Case for Enumerations,并且单数形式在这种情况下更具描述性(因为复数表示您存储多个通过对它们进行OR运算来计算枚举值。)

答案 1 :(得分:24)

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

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

public class Card
{
     // ...

话虽这么说,您可能还想考虑使用standard naming guidelines for Enums,这是CardSuit而不是card_suits,因为建议使用Pascal Casing,并且枚举没有标记为FlagsAttribute,建议多个值适用于单个变量。

答案 2 :(得分:11)

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

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

public class Card
{
    ...
}

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

答案 3 :(得分:1)

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

如果您的名称空间的名称是X,您将能够通过X.card_suit访问枚举值

如果您尚未为此枚举定义命名空间,请通过card_suit.Clubs等调用它们。

答案 4 :(得分:0)

将枚举定义移到类外但在当前名称空间内。将其声明为公开使其可以从全球访问。 www.LearnVisualStudio.Net视频为初学者提供了一个很好的例子来学习C#。我认为这也可以在www.microsoftvirtualacademy.com上以相同的C#初学者系列访问。

话虽如此,请使用Pascal或Carmel Case命名约定来使您的代码可读并避免歧义。例如CardSuit是首选。

答案 5 :(得分:-2)

我认为这就是你想要的。

grep