我目前正在与this课程一起学习,在课程05.1中,我们创建了一个私有变量,该私有变量将创建的Player类作为数据类型(?)。
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类设置为数据类型,那么为什么要在行21上创建该类的新实例并将其分配给已经预定义的变量_player呢?这样做有什么理由吗?我可以做类似的事情吗? Player player = new Player();
同时达到相同的结果?
答案 0 :(得分:4)
此处的区别在于变量的声明与将分配给该变量的对象的实例。
在类定义中,对_player的第一个引用只是为类型“ Player”的变量建立了一个声明-它不会创建Player对象的 instance :
private Player _player;
相反,“ DragonlightRPG()”方法使用“ new Player();”来执行对象的实例化。调用,将创建的对象分配给_player私有成员:
_player = new Player();
前者创建变量,后者创建要保存在变量中的对象。
您可能早先实例化了该对象;但是,最一般的指导是在需要时立即创建一个对象,使用它,然后销毁它。此外,任何特定用例的细节都可能要求仅在特定时间创建特定对象,或者仅在调用特定方法时才实例化该对象。这类决定通常是个人要求的问题。