为什么我的C#构造函数不能使用我正在尝试使用的方法?

时间:2015-04-28 21:50:53

标签: c# class-constructors

也许我误解了构造函数是如何工作的,但无论如何,我正在尝试创建一个数组并在构造函数中填充它。

我有以下代码 -

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 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

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

在上面的示例中," BuildDeck"不是构造函数...它是一个方法,因此必须指定一个返回类型(或者#34; void"如果它不返回任何东西)。

如果你想要一个构造函数,重命名" BuildDeck"到" ClsDeck"。

答案 2 :(得分: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.
    }
}

答案 3 :(得分: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
    }
}