【问题标题】:Move item form one List<> to another. C#将项目从一个 List<> 移动到另一个。 C#
【发布时间】:2016-08-14 19:48:19
【问题描述】:

我是编程新手,对 c# 非常陌生,我正在尝试为我正在学习的课程创建一个二十一点游戏,但我很早就遇到了麻烦。

我想要做的是将一个项目从一个 List 移动到另一个。或者,如果它更容易;首先将该项目添加到另一个列表中,然后从原始列表中删除该项目。(或者如果我要解决这个完全错误的问题,任何建议都会非常感谢)

因此,将卡片从牌组:卡片移至另一个列表:playerHand

这是列表“扑克牌”

public Deck()
{
    //add card suits- 
    cards = new List<Cards>();
    // Hearts
    cards.Add(new Cards("Ace", "Hearts", 11));
    cards.Add(new Cards("2", "Hearts", 2));
    cards.Add(new Cards("3", "Hearts", 3));
    cards.Add(new Cards("4", "Hearts", 4));
    cards.Add(new Cards("5", "Hearts", 5));
    cards.Add(new Cards("6", "Hearts", 6));
    cards.Add(new Cards("7", "Hearts", 7));
    cards.Add(new Cards("8", "Hearts", 8));
    cards.Add(new Cards("9", "Hearts", 9));
    cards.Add(new Cards("Jack", "Hearts", 10));
    cards.Add(new Cards("Queen", "Hearts", 11));
    cards.Add(new Cards("King", "Hearts", 12));
    // Diamonds
    cards.Add(new Cards("Ace", "Diamonds", 11));
    cards.Add(new Cards("2", "Diamonds", 2));
    cards.Add(new Cards("3", "Diamonds", 3));
    cards.Add(new Cards("4", "Diamonds", 4));
    cards.Add(new Cards("5", "Diamonds", 5));
    cards.Add(new Cards("6", "Diamonds", 6));
    cards.Add(new Cards("7", "Diamonds", 7));
    cards.Add(new Cards("8", "Diamonds", 8));
    cards.Add(new Cards("9", "Diamonds", 9));
    cards.Add(new Cards("Jack", "Diamonds", 10));
    cards.Add(new Cards("Queen", "Diamonds", 11));
    cards.Add(new Cards("King", "DIamonds", 12));
    // Spade
    cards.Add(new Cards("Ace", "Spades", 11));
    cards.Add(new Cards("2", "Spades", 2));
    cards.Add(new Cards("3", "Spades", 3));
    cards.Add(new Cards("4", "Spades", 4));
    cards.Add(new Cards("5", "Spades", 5));
    cards.Add(new Cards("6", "Spades", 6));
    cards.Add(new Cards("7", "Spades", 7));
    cards.Add(new Cards("8", "Spades", 8));
    cards.Add(new Cards("9", "Spades", 9));
    cards.Add(new Cards("Jack", "Spades", 10));
    cards.Add(new Cards("Queen", "Spades", 11));
    cards.Add(new Cards("King", "Spades", 12));
    // Clubs
    cards.Add(new Cards("Ace", "Clubs", 11));
    cards.Add(new Cards("2", "Clubs", 2));
    cards.Add(new Cards("3", "Clubs", 3));
    cards.Add(new Cards("4", "Clubs", 4));
    cards.Add(new Cards("5", "Clubs", 5));
    cards.Add(new Cards("6", "Clubs", 6));
    cards.Add(new Cards("7", "Clubs", 7));
    cards.Add(new Cards("8", "Clubs", 8));
    cards.Add(new Cards("9", "Clubs", 9));
    cards.Add(new Cards("Jack", "Clubs", 10));
    cards.Add(new Cards("Queen", "Clubs", 11));
    cards.Add(new Cards("King", "Clubs", 12));
}

【问题讨论】:

    标签: c# .net console


    【解决方案1】:
    Card cardToMove = cards[0];
    cards.Remove(card);
    playerHand.Add(card);
    

    也许还有一种更简洁的方式来创建所有卡片组:

    List<string> types = new List<string> { "Hearts", "Diamonds", "Spades", "Clubs" };
    List<dynamic> cards = new List<dynamic>
    {
        new {Text = "Ace", Number = 11 },
        new {Text = "2", Number = 2},
        new {Text = "3", Number = 3},
        new {Text = "4", Number = 4},
        new {Text = "5", Number = 5},
        new {Text = "6", Number = 6},
        new {Text = "7", Number = 7},
        new {Text = "8", Number = 8},
        new {Text = "9", Number = 9},
        new {Text = "Jack", Number = 10 },
        new {Text = "Queen", Number = 11 },
        new {Text = "King", Number = 12 }
    };
    
    var cardDeck = (from type in types
                    from card in cards
                    select new Card(card.Text, type, card.Number)).ToList();
    

    【讨论】:

    • 感谢您的帮助,我确实有一个问题。 (对不起,如果它的答案很明显)你的代码中的“卡片”是什么?我必须创建一个var卡吗?它应该代表什么?
    • 动态对象列表。您可以阅读该内容并阅读列表。我只是懒惰,不想拥有它的对象或元组
    • 我尝试了这种方法,但遇到了很多问题。我重写了完全不同的程序。谢谢你的帮助。
    • @Kris - 有问题吗?什么意思?
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多