为什么我要声明一个私有变量然后实例化?

Why am I declaring a private variable to then instantiate after?

我目前正在学习 this 课程,在第 05.1 课中,我们创建了一个私有变量,将创建的玩家 class 作为数据类型(?)。

using GameEngine;
using System.Windows.Forms;

namespace UserInterface
{
    public partial class DragonlightRPG : Form
    {
        #region Member Variables

        private Player _player;

        #endregion Member Variables

        #region Constructors

        public DragonlightRPG()
        {
            InitializeComponent();

            // Instantiate a new Player class.
            _player = new Player();

            // Assign value(s) to the player object properties.
            _player.CurrentHealth = 100;
            _player.Gold = 25;
            _player.MaximumHealth = 100;
            _player.PlayerExperience = 0;
            _player.PlayerLevel = 1;

            // Get the value(s) of the properties from the _player object, and
            // assign them to the text property of the labels on the form.
            lblExperience.Text = _player.PlayerExperience.ToString();
            lblGold.Text = _player.Gold.ToString();
            lblHitPoints.Text = _player.CurrentHealth.ToString();
            lblLevel.Text = _player.PlayerLevel.ToString();
        }

        #endregion Constructors
    }
}

如果私有变量 _player 在第 10 行将 Player class 设置为数据类型,为什么我们要在第 21 行创建该 class 的新实例并将其分配给已经预定义的变量 _player?这样做有什么理由吗?我可以做类似的事情吗? Player player = new Player(); 同时获得相同的结果?

此处的区别在于变量的声明与将分配给该变量的对象的实例化

在 class 定义中,对 _player 的第一个引用只是建立对类型 'Player' 变量的声明 - 它不会创建 实例 播放器对象:

private Player _player;

'DragonlightRPG()'方法,相反,确实用'new Player();'调用执行对象的实例化,将创建的对象赋值给_player私有成员:

_player = new Player();

前者创建变量,后者创建变量中要保存的对象。

您本可以更早实例化该对象;然而,最一般的指导是在需要时立即创建一个对象,使用它,然后销毁它。此外,任何特定用例的细节可能规定特定对象仅在特定时间创建,或者仅应在调用特定方法时实例化。这些类型的决定通常是个人需求的问题。