我正在制作一个二十一点并且已经制作了一个卡片类。我的卡类工作但我需要使用值集访问器搜索values数组并确定value参数是否有效。我不知道如何做到这一点。 任何帮助都会被挪用
以下是我的卡片课程
private class Card
{
public enum SUIT
{
HEARTS,
SPADES,
DIAMONDS,
CLUBS
};
private SUIT _suit;
private String _value;
public Card(SUIT suit, String value)
{
_suit = suit;
_value = value;
}
private String[] values =
{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
public SUIT Suit
{
get { return _suit; }
set { _suit = value; }
}
public String Value
{
get { return _value; }
set { _value = value; }
}
}
答案 0 :(得分:4)
一种方法是使用enum
作为值:
public enum Value
{
Two,
Three ,
Four,
Five,
Six,
Seven,
Eight,
Nine,
Ten,
Jack,
Queen,
King,
Ace,
};
public Value Value
{
get { return _value; }
set { _value = value; }
}
作为设计说明,由于卡实例的值不应更改,更好的设计是仅在构造函数中设置套装和值,并使属性为只读。它也可以很好地利用工厂模式,但现在可能比你想要的更高级(如果你不明白它是什么,不要使用它)。
答案 1 :(得分:1)
要检查是否允许提供的值,您可以在Contains()
上使用IEnumerable
方法
我还建议使用比values
更好的变量名称。 validValues
怎么样?
private String[] validValues =
{"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
public String Value
{
get { return _value; }
set
{
if (validValues.Contains(value))
_value = value;
else
throw new InvalidOperationException(); //or whatever you like
}
}