简短回答:否
常规答案:只需使用字符并获取如下数值:
int numericValueOne = (int)Value.Ace;
int numericValueTwo = (int)Value.Two;
长答案:如果最终用途是一副纸牌,这是一个很好的实现:
public class Card
{
private readonly Suit _suit;
private readonly Value _value;
public Card(int number)
{
_suit = (Suit)(number / 13); // 0 = Hearts, 1 = Diamonds ...
_value = (Value)(number % 13 + 1); // 1 = ace, 2 = two
}
public Suit Suit
{
get { return _suit; }
}
public Value Value
{
get { return _value; }
}
public int ToNumber()
{
return (int)_suit * 13 + ((int)_value - 1);
}
}
public enum Suit
{
Hearts = 0,
Diamonds = 1,
Clubs = 2,
Spades = 3
}
public enum Value
{
Ace = 1,
Two = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6,
Seven = 7,
Eight = 8,
Nine = 9,
Ten = 10,
Jack = 11,
Queen = 12,
King = 13,
}
在此类中包装两个枚举的好处是您可以将每张卡片用作数字 (0-52) 和/或类。此外,您可以根据需要将任何操作、方法、属性添加到类中,并且在存储或传输数据时只需使用数字即可。 Ref