2011-12-09 35 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(); 
相關問題