如何将int转换为枚举值?

Mik*_*aAK 10 c# class

这是我的代码抛出一个错误说Cannot convert type "int" to Cards.SuitsCannot convert type "int" to Cards.Rank

private Card[] cards;
public Deck()
{
    cards = new Card[52];
    for (int suitVal = 0; suitVal < 4; suitVal++)
    {
        for (int rankVal = 0; rankVal < 14; rankVal++)
        {
            cards[suitVal * 13 + rankVal - 1] = new Card((Suits)suitVal, (Rank)rankVal);
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

卡构造函数是

public readonly Suits suit;
public readonly Rank rank;
public Card(Suits newSuit, Rank newRank)
{
    suit = newSuit;
    rank = newRank;
}
Run Code Online (Sandbox Code Playgroud)

现在,套装enum和Rank枚举是从ACE = 1开始的常规套牌,所以套装是DIAMONDS,CLUBS,HEARTS,SPADES.任何人都可以告诉我为什么我得到上述错误.以下代码来自一本书.谢谢!

*编辑

    public enum ranks
    {
        ACE = 1,
        TWO,
        THREE,
        FOUR,
        FIVE,
        SIX,
        SEVEN,
        EIGHT,
        NINE,
        TEN,
        JACK,
        QUEEN,
        KING,
    }

    public enum Suit
    {
        DIAMOND,
        CLUB,
        HEART,
        SPADE,
    }
Run Code Online (Sandbox Code Playgroud)

Ehs*_*san 1

像这样改变你的线路

 cards[suitVal * 13 + rankVal] = new Card(((Suit)suitVal), ((ranks)rankVal));
Run Code Online (Sandbox Code Playgroud)

由于您的类在构造函数中采用枚举,因此请像这样更改它

public readonly Suit suit;
public readonly ranks rank;
public Card(Suit newSuit, ranks newRank)
{
    suit = newSuit;
    rank = newRank;
}
Run Code Online (Sandbox Code Playgroud)