3

也许我误解了构造函数的工作原理,但无论如何,我试图创建一个数组并将其填充到构造函数中。

我有以下代码 -

class ClsDeck
{
    private string[] deck = new string[52];
    private string[] hand = new string[12];
    BuildDeck()
    {
        //lots of code assigning images to each individual element of the "deck" array.
    }

    //many other methods that need to be called by a form.
}

Visual Studio 2012 坚持该方法具有返回类型。我只是在 BuildDeck 方法中添加了“void”,错误就消失了,但是我看到的每个构造函数示例都必须与类同名,并且它是类中唯一的方法。

4

4 回答 4

8

那甚至不会编译。BuildDeck()没有返回类型。构造函数名称需要与类名匹配(包括大小写)。替换BuildDeckClsDeck()

于 2015-04-28T21:53:03.453 回答
4

根据定义,构造函数是一种方法,它 1.) 与类同名,并且 2.) 没有返回值。

在上面的示例中,“BuildDeck”不是构造函数......它是一种方法,因此必须指定返回类型(如果不返回任何内容,则为“void”)。

如果您想要一个构造函数,请将“BuildDeck”重命名为“ClsDeck”。

于 2015-04-28T21:53:33.697 回答
3

您的类的构造函数实际上丢失了。

进行以下更改,您的代码将编译:

class ClsDeck
{
    private string[] deck = new string[52];
    private string[] hand = new string[12];

    public ClsDeck()
    {
        // Place your array initializations here.
    }

    private void BuildDeck()
    {
        //lots of code assigning images to each individual element of the "deck" array. }
        //many other methods that need to be called by a form.
    }
}
于 2015-04-28T21:56:06.840 回答
2

那将不起作用或编译。为了实现你想要的,你可以有一个构造函数ClsDeck 并调用BuildDeck

class ClsDeck {
    private string[] deck = new string[52];
    private string[] hand = new string[12];
    ClsDeck() { //lots of code assigning images to each individual element of the "deck" array. }

        //many other methods that need to be called by a form.
        BuildDeck();
    }

    private void BuildDeck() {
        //Build your deck
    }
}
于 2015-04-28T21:54:13.897 回答