System.Array 不包含 Add 的定义

本文关键字:定义 Add 包含 Array System | 更新日期: 2023-09-27 18:33:25

我正在创建一个二十一点游戏,到目前为止,我已经制作了纸牌类,甲板类和鞋子类。纸牌类有效,套牌类有效,鞋子类有效,但我仍在练习我的手类。我创建了一个方法,如果手牌中已经有MAX_CARDS张牌,则会抛出异常,否则它会将牌添加到手牌上并递增_cardCount但由于某种原因,在我的代码中_hand.Add(card)

System.Array 不包含 Add 的定义。

任何正确方向的帮助或指导将不胜感激

这是我的手课

class Hand
{
    const Int32 MAX_CARDS = 12;
    private Card[] _hand = new Card[MAX_CARDS];
    private Int32 _cardCount = 0;
    public Int32 CardCount
    {
        get
        {
            return _cardCount;
        }
    }
    public void AddCard(Card card)
    {
        if (_cardCount >= MAX_CARDS)
        {
            throw new Exception("Cannot of more than 12 cards in a hand");
        }
        else
        {
            _hand.Add(card);
            _cardCount++;
        }
    }
    public Card GetCard(Int32 cardIndex)
    {
        if (cardIndex >= _cardCount)
        {
            throw new Exception("Invalid Entry");
        }
        else
        {
            return _hand[cardIndex];
        }
    }
    Int32[] cardValues = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 };
    String[] cardSymbols = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
    private Int32 SymbolToValue(String symbol)
    {
        int index = Array.IndexOf(cardSymbols, symbol);
        if (index != -1)
        {
            return cardValues[index];
        }
        else
        {
            throw new Exception("Value Not In Table");
        }
    }
    public Int32 GetSum()
    {
        int value = 0;
        Boolean aceflag;
        for (int i = 0; i < _hand.Length; i++)
        {
            value += SymbolToValue(_hand[i].Value);
            if (String.Equals(_hand[i].Value, "A"))
            {
                aceflag = true;
            }
            else
            {
                aceflag = false;
            }
            if (aceflag == true && value <= 21)
            {
                value = value + 10;
            }
        }
        return value;
    }
}

System.Array 不包含 Add 的定义

c# 中数组的大小是不可变的,所以我建议改用 List。

private List<Card> _hand = new List<Card>(MAX_CARDS);

我认为你的代码有很多问题,但如果你真的想按照你的方式去做,请使用索引添加一个项目:

public void AddCard(Card card)
{
    if (_cardCount >= MAX_CARDS)
    {
        throw new Exception(string.Format("This hand already contains {0} cards, " +
            "which is the maximum.", MAX_CARDS));
    }
    else
    {
        _hand[_cardCound] = card;
        _cardCount++;
    }
}
在这里

输入代码,我们创建一个新的列表,其中包含已经存在的数组中的元素。我们使用 List 构造函数并向其传递数组。List 接收此参数并从中填充其值。

警告:数组元素类型必须与 List 元素类型匹配,否则编译将失败。

将数组复制到列表的程序:C#

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        int[] arr = new int[3]; // New array with 3 elements
        arr[0] = 2;

        arr[1] = 3;
        arr[2] = 5;
        List<int> list = new List<int>(arr); // Copy to List
        Console.WriteLine(list.Count);       // 3 elements in List
     }
}

Output : 3

数组不适合您的代码在 c# 列表中使用数组不是一个好的选择。因此,请使用列表类型数据。您可以使用列表并存储此对象中的每个类型数据并将其转换为任何类型,还可以使用循环从列表中获取单个数据。它非常易于使用和实现,因此使用列表很好且易于代码。

首先,我们声明一个 int 值列表。我们创建一个未指定大小的新列表,并向其添加四个质数。值按添加顺序存储。还有其他方法可以创建列表 - 这不是最简单的方法。

using System.Collections.Generic;
class Program
{
  static void Main()
   {
     List<int> list = new List<int>();
     list.Add(2);
     list.Add(3);
     list.Add(5);
     list.Add(7);
   }
}