Почему мой конструктор C# не работает с методом, который я пытаюсь использовать?

Возможно, я неправильно понял, как работают конструкторы, но в любом случае я пытаюсь создать массив и заполнить его в конструкторе.

У меня есть следующий код -

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 настаивает на том, чтобы метод имел тип возвращаемого значения. Я просто добавил "void" в метод BuildDeck, и ошибка исчезла, но каждый пример конструктора, который я видел, должен иметь то же имя, что и класс, и это был единственный метод в классе.

4 ответа

Это даже не скомпилируется. BuildDeck() не имеет типа возврата. Имена конструкторов должны соответствовать имени класса (включая регистр). замещать BuildDeck с ClsDeck(),

По определению, конструктор - это метод, который 1.) имеет то же имя, что и класс, а 2.) не имеет возвращаемого значения.

В приведенном выше примере "BuildDeck" не является конструктором... это метод, и поэтому он должен указывать тип возвращаемого значения (или "void", если он ничего не возвращает).

Если вы хотите конструктор, переименуйте "BuildDeck" в "ClsDeck".

Конструктор вашего класса фактически отсутствует.

Сделайте следующие изменения, и ваш код скомпилируется:

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.
    }
}

Это не будет работать или компилировать. Чтобы достичь того, чего вы хотите, вы можете иметь конструктор для 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
    }
}
Другие вопросы по тегам