C# 对象引用未设置为对象的实例(矩形数组)

C# 对象引用未设置为对象的实例(矩形数组),c#,nullreferenceexception,C#,Nullreferenceexception,我想用C#制作一个游戏,有关卡,每个关卡都有更多的对象 我有以下代码: Rectangle character, plus10; Rectangle[] eraser, compass; private void Initialize() { character = new Rectangle(_x, (int)_y, 40, 40); for (int i = 1; i <= objects; i++) { erase

我想用C#制作一个游戏,有关卡,每个关卡都有更多的对象

我有以下代码:

Rectangle character, plus10;

Rectangle[] eraser, compass;


private void Initialize()
{            
    character = new Rectangle(_x, (int)_y, 40, 40);
    for (int i = 1; i <= objects; i++)
    {
        eraser[i] = new Rectangle(_m[i], 400, 40, 40);//I get the error here
        compass[i] = new Rectangle(_m[i], 400, 40, 40);//And here
    }
    plus10 = new Rectangle(_n, 400, 40, 40);
}


private void Form1_Paint(object sender, PaintEventArgs e)
{
        e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.background), 0, 0);
        if (_plrPos == playerPosition.Up)
        {
            e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.jump), _x, _y);
        }
        else if (_plrPos == playerPosition.Down)
        {
            e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.slide), _x, _y);
        }
        else
        {
            if (runImg == 1)
            {
                e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.run1), _x, _y);
                runImg = 2;
            }
            else if (runImg == 2)
            {
                e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.run2), _x, _y);
                runImg = 1;
            }
        }
        for (int i = 1; i <= objects; i++)
        {
            if (_obj[i] % 2 == 0)
            {
                e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.eraser), _m[i], 400);
            }
            else if (_obj[i] % 2 == 1)
            {
                e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources.compass), _m[i], 400);
            }
        }
        e.Graphics.DrawImage(new Bitmap(Happy_Math.Properties.Resources._10), _n, 400);

        Initialize();
    }

您能帮助我吗?

您应该在定义数组时或在
initialize
方法中初始化数组:

Rectangle[] eraser = new Rectangle[objects.Length];
Rectangle[] compass = new Rectangle[objects.Length];
如果您不知道元素计数,请使用
列表

几乎不可能“猜测”解决方案,但这看起来很可疑:

for (int i = 1; i <= objects; i++)

for(int i=1;i)您需要先分配橡皮擦和指南针阵列,然后再将元素分配给它们。
for (int i = 1; i <= objects; i++)
for (int i = 0; i < objects; i++)