在数组中搜索值并检查值是否有效

时间:2014-12-01 20:57:46

标签: c#

我正在制作一个二十一点并且已经制作了一个卡片类。我的卡类工作但我需要使用值集访问器搜索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; }
    }
}

2 个答案:

答案 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
    }
}