为什么我要声明一个私有变量然后实例化?
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();
前者创建变量,后者创建变量中要保存的对象。
您本可以更早实例化该对象;然而,最一般的指导是在需要时立即创建一个对象,使用它,然后销毁它。此外,任何特定用例的细节可能规定特定对象仅在特定时间创建,或者仅应在调用特定方法时实例化。这些类型的决定通常是个人需求的问题。
我目前正在学习 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();
前者创建变量,后者创建变量中要保存的对象。
您本可以更早实例化该对象;然而,最一般的指导是在需要时立即创建一个对象,使用它,然后销毁它。此外,任何特定用例的细节可能规定特定对象仅在特定时间创建,或者仅应在调用特定方法时实例化。这些类型的决定通常是个人需求的问题。