Почему это выдает NullReferenceException?

У меня есть метод вызова addColisionBox, и когда я вызываю его и устанавливаю для него значения, я получаю нулевой указатель в месте, где я его вызываю.. Я покажу некоторый код:

    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 ответов

Решение

Вы не инициализировали свой collision объект. У вас должно быть что-то похожее на следующее. например

CollisionHandler collision = new CollisionHandler();

... или как вы создаете / захватываете экземпляр вашего объекта перед его использованием.

Вы не создали другой экземпляр, все, что вы сделали, - это создали переменную данного типа.

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

Вы не создали экземпляр вашего объекта 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);

Тебе нужно

CollisionHandler collision = new CollisionHandler();

Вы только что объявили переменную, но ничего не установили, отсюда исключение нулевой ссылки.

Я бы предположил, что collision является нулевым, когда вы пытаетесь вызвать addCollisionBox метод, тем самым вызывая нулевую разыменование. Если оно определенно имеет значение на каком-то этапе, вы, вероятно, удаляете его где-то, но, учитывая код, который вы вставили, кажется более вероятным, что вам просто нужно создать экземпляр CollisionHandler так как не похоже, что ты так делаешь.

CollisionHandler collision = new CollisionHandler();
Другие вопросы по тегам