我的结构不包含有两个参数的构造函数... 但确实如此

本文关键字:构造函数 参数 两个 包含 结构 我的 | 更新日期: 2023-09-27 18:02:24

我试图将卡片添加到列表中。卡片是结构体。在我的结构中,我有一个构造函数,它接受一个值和一个suit。当我尝试创建一个新的卡,我得到错误"'Blackjack.Program。Card'不包含接受2个参数的构造函数'正如你所看到的,确实如此。这是我的代码。

public struct Card
{
    int value;
    string suit;
    Card(int _value, string _suit)
    {
        value = _value;
        suit = _suit;
    }
};
public List<Card> deck = new List<Card>();

static void shuffleNewDeck(ref List<Card> newDeck)
{
    newDeck.Clear();
    for (int i = 0; i < 13; i++) // add spades
    {
        newDeck.Add(new Card(i, "Spade")); // error here
    }
}

我的结构不包含有两个参数的构造函数... 但确实如此

public添加到Card构造器中

将构造函数访问器更改为public

之类的
public struct Card
{
    int value;
    string suit;
    public Card(int _value, string _suit)
    {
        value = _value;
        suit = _suit;
    }
}

来自私有构造函数(c#编程指南)

请注意,如果不对构造函数使用访问修饰符默认情况下仍然是私有的。

c#中的结构和类在默认情况下是私有的。你必须修改你的代码,像:

public struct Card
{
    int value;
    string suit;
    public Card(int _value, string _suit)
    {
        value = _value;
        suit = _suit;
    }
};

编辑

我已经根据这篇文章改变了我的答案

构造函数不是公共的

public Card(int _value, string _suit)