C# 为什么这会给出一个NullReferenceException?

C# 为什么这会给出一个NullReferenceException?,c#,.net,nullreferenceexception,C#,.net,Nullreferenceexception,我有一个方法调用程序addColisionBox,当我调用它并设置它的值时,我会在调用它的地方得到null指针。。我将展示一些代码: 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,

我有一个方法调用程序addColisionBox,当我调用它并设置它的值时,我会在调用它的地方得到null指针。。我将展示一些代码:

    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);
CollisionHandler collision = new CollisionHandler();
....
//CurrentX and CurrentY position to pass into addCollisionBox method and at the array number i
collision.addCollisionBox(currentX, currentY, i);

它在一个消息框中说,VisualC#express给出:“对象引用未设置为对象的实例。”

您没有初始化您的
碰撞
对象。您应该有类似于以下内容的内容。e、 g

CollisionHandler collision = new CollisionHandler();

…或者您在使用对象之前创建/获取对象实例的方式。

您没有初始化您的
碰撞
对象。您应该有类似于以下内容的内容。e、 g

CollisionHandler collision = new CollisionHandler();

…或在使用对象之前创建/获取对象实例的方式。

如果没有创建另一个实例,则只需创建给定类型的变量

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

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

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

您尚未创建CollisionHandler对象的实例。试着这样做:

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

您尚未创建CollisionHandler对象的实例。试着这样做:

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

CollisionHandler collision = new CollisionHandler();
您刚刚声明了变量,但没有将其设置为任何值,因此出现了空引用异常。

您需要

CollisionHandler collision = new CollisionHandler();

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

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

CollisionHandler collision = new CollisionHandler();

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

CollisionHandler collision = new CollisionHandler();

您忘记了collision=new CollisionHandler();哦,我疯了。。我怎么会忘记这一点。除非在声明和方法调用之间有代码初始化对象,否则您将获得NullPointerException,因为您没有初始化对象。请注意,在C#中,它是一个
NullReferenceException
,这是Java中的
NullPointerException
的函数等价物;哦,我疯了。。我怎么会忘记这一点。除非在声明和方法调用之间有代码初始化对象,否则您将获得NullPointerException,因为您没有初始化对象。请注意,在C#中,它是一个
NullReferenceException
,这在功能上相当于Java中的
NullPointerException
。我会在10分钟内接受这个回答。。显然,我得等一等才能接受。我会在10分钟内接受这件衣服。。我得等一等才接受。