为什么会发出NullReferenceException?

时间:2011-12-09 20:54:54

标签: c# .net nullreferenceexception

我有一个方法调用者addColisionBox,当我调用它并设置值时,我在调用它的地方得到nullpointer ..我将显示一些代码:

    public void addCollisionBox(int x, int y, int arrayNum)
    {
        //Creating a new rectangle at the x & y cord passed in
        rectangle[arrayNum] = new Rectangle(x, y, R_Width, R_Height);
    }

我在另一个类中创建了这样的内容:

CollisionHandler collision;
....
//CurrentX and CurrentY position to pass into addCollisionBox method and at the array number i
collision.addCollisionBox(currentX, currentY, i);

它在消息框中说Visual C#express表示:“对象引用未设置为对象的实例。”

5 个答案:

答案 0 :(得分:6)

您没有将collision对象初始化。你应该有类似以下的东西。 e.g。

CollisionHandler collision = new CollisionHandler();

...或者在使用对象之前如何创建/抓取对象的实例。

答案 1 :(得分:2)

您还没有创建另一个实例,您所做的就是创建给定类型的变量。

CollisionHandler collision = new CollisionHandler();
//                 ^ variable           ^ instance of object

答案 2 :(得分:1)

您尚未创建CollisionHandler对象的实例。尝试这样的事情:

CollisionHandler collision = new CollisionHandler();
....
//CurrentX and CurrentY position to pass into addCollisionBox method and at the array number i
collision.addCollisionBox(currentX, currentY, i);

答案 3 :(得分:0)

你需要

CollisionHandler collision = new CollisionHandler();

您刚刚声明了变量,但没有将其设置为任何内容,因此是空引用异常。

答案 4 :(得分:0)

当您尝试在其上调用collision方法时,我建议addCollisionBox为空,从而导致空取消引用。如果它在某个阶段确实有一个值,那么你可能会在某个地方删除它,但是考虑到你粘贴的代码,你似乎更有可能只需要创建CollisionHandler的实例,因为它不会出现你正在这样做。

CollisionHandler collision = new CollisionHandler();