Разница здесь в объявлении переменной по сравнению с созданием объекта, который будет присвоен этой переменной.
В определении класса первая ссылка на _player просто устанавливает объявление переменной типа «Player» - она не создает экземпляр объекта Player:
private Player _player;
Метод 'DragonlightRPG ()', наоборот, выполняет выполнение объекта с помощью 'new Player ();'вызов, присвоение созданного объекта приватному члену _player:
_player = new Player();
Первый устанавливает переменную, второй создает объект, который будет удерживаться в переменной.
Вы могли бы создать экземпляр объекта раньше;тем не менее, самым общим руководством было бы создать объект немедленно, когда он необходим, использовать его, а затем уничтожить. Кроме того, специфика любого конкретного варианта использования может диктовать, что конкретный объект может быть создан только в определенные моменты времени, или должна создаваться только при вызове определенного метода. Такие решения часто зависят от индивидуальных требований.