2011-12-09 68 views
1

我有一个方法调用者addColisionBox,当我把它和值设置为它在我的地方IM得到空指针调用它。我将展示一些代码:为什么会发出NullReferenceException?

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#中表现给出一个消息框说:“对象引用不设置到对象的实例。”

+2

你忘了collision = new CollisionHandler(); –

+0

哦,我疯了..我怎么能忘记这个.. – Rakso

+1

除非有代码初始化声明和方法调用之间的对象,你会得到NullPointerException,因为你没有初始化对象。 – tafoo85

回答

6

您没有初始化您的collision对象。你应该有以下类似的东西。例如

CollisionHandler collision = new CollisionHandler(); 

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

+0

我会在10分钟内接受这个答案..我必须等待,然后才接受显然。 – Rakso

2

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

CollisionHandler collision = new CollisionHandler(); 
//    ^variable   ^instance of object 
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); 
0

你需要

CollisionHandler collision = new CollisionHandler(); 

您刚刚声明的变量,但它不设置任何东西,因此空引用异常。

0

当您试图调用addCollisionBox方法时,我会建议collision为空,从而导致null取消引用。如果它在某个阶段肯定有价值,那么你可能会在某个地方删除它,但是鉴于你粘贴的代码,似乎更有可能你只需要创建一个CollisionHandler的实例,因为它看起来并不像你这样做。

CollisionHandler collision = new CollisionHandler(); 
相关问题