私のような列挙型を作成したいの使用:列挙型宣言でint型の値
enum Ranks{ 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, Ace}
はそれを行うための方法はありますか?
私のような列挙型を作成したいの使用:列挙型宣言でint型の値
enum Ranks{ 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, Ace}
はそれを行うための方法はありますか?
これを行うにはエレガントな方法がないようですので、ここではハックです:各整数の先頭にアンダースコアを付け加えてください!
enum LikeThis { _1, _2, _3, _4, _5, _6 }
短い答え:ません
正規の答え:単に使用文字と、このような数値を取得:
int numericValueOne = (int)Value.Ace;
int numericValueTwo = (int)Value.Two;
長い答え:もしを最終的な使用法はカードのデッキのためですsが偉大な実装です:
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)、および/またはクラスとして各カードを使用することができるということです。さらに、必要に応じて操作、メソッド、プロパティをクラスに追加することができます。データを保存または送信するときには、その番号のみを使用する必要があります。
enum Ranks { Ace = 'A', Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten, King = 'K', Queen = 'Q', Jack = 'J' };
そして、そのようにランク上のスイッチを実行します:あなたはこのような何か行うことができますRef
私は私が書いたシンプルなブラックジャックのゲームでこれを使用
switch (Rank)
{
case Ranks.Two:
case Ranks.Three:
case Ranks.Four:
// Cast to an int and display it
break;
case Ranks.Ace:
case Ranks.King:
case Ranks.Queen:
case Ranks.King:
// Cast to char and display it
break;
}
を、うまく
「Two」、「Three」 –
intを文字列「2」、「3」に変更できますか? – Brett
できませんが、[許容可能な回避策](http://stackoverflow.com/questions/2952192/how-can-i-create-an-enum-using-numbers)がたくさんあります。 –