这是家庭作业,仅供引用。并至少感谢您对此的关注。

因此,我们正在学习enumsList<>IComparable<T>structs,并且正在创建一副纸牌。我有一个Card Struct,说要创建一张卡片,它需要等级和花色。我有两个枚举。

我在使用NewDeck()方法时遇到麻烦。

我们获得了要使用的方法 header ,并给出了一个提示以“使用静态方法GetValues遍历所有Rank枚举器”。

我们还获得了foreach循环。我们不应该调用排序,因为遍历所有等级应该创建一个已经排序的列表。

我在知道如何将卡片添加到卡组时遇到麻烦。要添加Card,我想我可能会使用Card.Add,但是它不会在代码完成中显示,并且不是一种选择,而且我不确定为什么。这是我的Cards Struct-的代码

    namespace Cards
{
    struct Card : IComparable<Card>
    {
        public Suit Suit { get; private set; }
        public Rank Rank { get; private set; }
        public Card(Suit suit, Rank rank) :
            this()
        {
            this.Suit = suit;
            this.Rank = rank;
        }
        public override string ToString()
        {
            return string.Format("{0} {1}", (Char)this.Suit, this.Rank);
        }

        public int CompareTo(Card other)
        {
            return Rank.CompareTo(other.Rank);
        }
    }

    public enum Suit { Spades = 9824, Clubs = 9827, Diamonds = 9830, Hearts = 9829 }

    public enum Rank { Ace, Deuce, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
}

这是我的newDeckMethod()的代码
public static List<Card>  NewDeck()
        {
            foreach (Cards.Rank r in Enum.GetValues(typeof(Rank)))
               //Card.Add

        }

最佳答案

您需要创建一个列表。现在,您的NewDeck()方法没有定义一个。

public static List<Card> NewDeck() {
    List<Card> deck = new List<Card>();
    foreach (Cards.Rank r in Enum.GetValues(typeof(Rank))) {
        foreach (Cards.Suit s in Enum.GetValues(typeof(Suit))) {
            deck.Add(new Card(s, r));
        }
    }

    return deck;
}

10-04 23:33