Инициализация объекта подкласса в классе - StackOverflowException - PullRequest
0 голосов
/ 18 ноября 2018

Я разобрал свой код до частей, которые вызывают проблему. Код переходит туда и обратно на строки 5 и 9, вызывая исключение stackoverflow.

Как я мог сделать это по-другому? Мне нужен экземпляр Platform внутри класса Game для использования в функциях.

namespace Games
{
    public class Game
    {
        private Platform platform = new Platform();
    }
    class Platform : Game
    {
        private bool[] squares = new bool[9];
    }
}

1 Ответ

0 голосов
/ 18 ноября 2018

Когда создается экземпляр Game, он создает экземпляр Platform, который будет вызывать конструктор базового класса, который создает экземпляр Platform, который будет вызывать конструктор базового класса, который будет ...

Видите, куда это ведет?

Вы должны использовать Platform там, где вы пытаетесь использовать Game.Многие утверждают, что вообще не используют наследование.Рассмотрим композицию, которая в вашем случае может означать, что Game имеет свойство типа Platform, но Platform не наследуется от Game.

...