【问题标题】:Field is never assigned to, and will always have its default value字段永远不会分配给,并且将始终具有其默认值
【发布时间】:2015-03-08 10:48:19
【问题描述】:

我正在为学校制作一个小游戏,我想列出一个包含来自 Bricks 类的实例的列表。所以我就这么做了。

 public class Game1 : Game
    {
        public static SpriteBatch spriteBatch;

        private GraphicsDeviceManager graphics;
        private WreckingBall          _wreckingBall;
        private MouseHandler          _mouse;
        private bool                  _drag;

        private List<Brick> _bricks;

但是现在编译器说“字段 'WreckingBall.Game1._bricks' 从未分配给,并且将始终具有其默认值 null”

这是我的积木课

class Brick : DrawableGameComponent
    {
        public Texture2D _texture { get; set; }
        public Vector2 _position { get; set; }


         public Brick(Game game)
            : base(game)
        {
            Game.Components.Add(this);
            this._position = _position;
        }

         protected override void LoadContent()
         {
             _texture = Game.Content.Load<Texture2D>("Brick");

             base.LoadContent();
         }

         public override void Update(GameTime gameTime)
         {
             _position = new Vector2(100, 100);

             base.Update(gameTime);
         }

         public override void Draw(GameTime gameTime)
         {
                 Game1.spriteBatch.Draw(_texture, _position, Color.White);

             base.Draw(gameTime);
         }

    }

有谁知道我做错了什么?

【问题讨论】:

  • 编译器错了吗?您确实从未分配过它。

标签: c# oop


【解决方案1】:

您需要在代码中的某个位置:

_bricks = new List<Brick>();

一个好地方是在构造函数中,但你甚至可以在私有变量部分初始化列表:

private List<Brick> _bricks = new List<Brick>();

【讨论】:

    【解决方案2】:

    Game中实例化它:

    private List<Brick> _bricks = new List<Brick>();
    

    【讨论】:

    • 哇哦。看我自己的代码太久了,没看到这么愚蠢的错误。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多