Почему мой конструктор 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
}
}