Вы можете представить каждую карточку в виде числа, а затем обернуть их как в перечисление, так и в класс. Если каждое число от 0 до 51 представляет карточку, вы можете получить перечисление:
public enum Card
{
HeartsAce = 0,
Hearts2 = 1,
// ... and so on
}
int nCard = 16;
Card myCard = (Card)nCard;
Вы также можете иметь класс:
public class Card
{
private readonly int _nSuitNumber = 0;
private readonly int _nCardNumber = 0;
public Card(int a_nNumber)
{
_nSuitNumber = a_nNumber / 13; // 1 = Hearts, 2 = Diamonds ...
_nCardNumber = a_nNumber % 13; // 1 = ace, 2 = two
}
}
Или еще лучше объединить их.
public class Card
{
private readonly Suit _suit;
private readonly Value _value;
public Card(int a_nNumber)
{
_suit = (Suit)(a_nNumber / 13); // 0 = Hearts, 1 = Diamonds ...
_value = (Value)(a_nNumber % 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), так и от класса. Класс - не более чем обертка вокруг числа. Вы можете добавлять любые операции, методы, свойства в класс по мере необходимости. А когда вы сохраняете или передаете данные, вам нужно использовать только номер.