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

问题描述 投票:0回答:1

[我目前正在与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();是否达到相同的结果?

c# instantiation
1个回答
4
投票

这里的区别在于变量的declaration与将分配给该变量的对象的instantiation

在类定义中,对_player的第一个引用只是为类型为'Player'的变量建立了一个声明-它没有创建Player对象的instance

private Player _player;
相反,

'DragonlightRPG()'方法,does使用'new Player();执行对象的实例化”。调用,将创建的对象分配给_player私有成员:

_player = new Player();

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

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

© www.soinside.com 2019 - 2024. All rights reserved.