我有一个程序,其中包含一个包含公共枚举的类,如下所示:
public class Card
{
public enum card_suits
{
Clubs,
Hearts,
Spades,
Diamonds
}
...
我想在我的项目的其他地方使用它,但是如果不使用Card.card_suit就不能这样做。有没有人知道C#中是否有办法声明这个,以便我能够声明
card_suits suit;
没有引用它所在的类?
答案 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