我的struct"不包含带有2个参数的构造函数" ......但确实如此

时间:2014-05-09 03:50:23

标签: c# struct constructor

我正在尝试将卡添加到列表中。卡片是结构。在我的结构中,我有一个带有值和套装的构造函数。当我尝试创建一张新卡时,我收到错误"' 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

    }
}

4 个答案:

答案 0 :(得分:6)

public添加到Card构造函数中。

答案 1 :(得分:4)

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

类似

public struct Card
{
    int value;
    string suit;

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

来自Private Constructors (C# Programming Guide)

  

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

答案 2 :(得分:2)

c#中的结构和类默认是私有的。你必须修改你的代码,如:

public struct Card
{
    int value;
    string suit;

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

修改

我已参考此post

更改了我的回答

答案 3 :(得分:0)

您的构造函数不公开。

public Card(int _value, string _suit)