Почему это выдает 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();