C # новый класс с параметром конструктора, который ссылается на класс, в котором он создается

#c#

#c#

Вопрос:

Есть ли способ создать новый класс с параметром для конструктора, являющимся классом, в котором он создан? Я попробовал ключевое слово ‘this’, но получаю ошибку: «ключевое слово this недоступно в текущем контексте»

Код — это в основном то, что я пытаюсь сделать. Игроку нужна ссылка на его игровой класс.

 class Player
{
      Game referenceGame;

      public Player(Game game)
      {
           referenceGame = game;
      }
         
}


class Game
{
      public Player player1 = new Player(this);
}

  

Ответ №1:

Вы не можете ссылаться на this в инициализаторе поля, вот и все. Вы можете сделать это из тела конструктора, поэтому вам просто нужно изменить Game класс на:

 class Game
{
    public Player player1;

    public Game()
    {
        player1 = new Player(this);
    }
}
  

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

Ответ №2:

Разве это не то, что вы ищете?

 class Player
{
    Game referenceGame;
    public Player(Game game)
    {
        referenceGame = game;
    }
}

class Game
{
    Player player1;
    public Game()
    {
        player1 = new Player(this);
    }
}