2011-12-21 7 views
0

Я развиваю небольшую RTS в XNA.Как сравнить два Hashtables?

Я устанавливаю каждое положение «goto» как вектор, которому они должны идти. Все работает нормально, если я не сравниваю два Hashtables, но когда я это делаю, я получаю эту «необработанную ошибку NullReferenceException» досадную ошибку.

Вот кусок кода:

if (((float)unit[(int)selectedunits[I+"ID"] + "posX"] != (float)cgoto[(int)selectedunits[I+"ID"] + "X"]) && ((float)unit[(int)selectedunits[I+"ID"] + "posY"] != (float)cgoto[(int)selectedunits[I+"ID"] + "Y"])) 
+2

И вы должны научиться писать чистый код ... – r2d2rigo

+0

Alright спасибо, будет делать. –

ответ

3
  1. в NullReferenceExceptions происходят, когда вы приводите null (от отсутствующей записи в некоторой хеш-таблицы) к int или float. Не зная вашего кода, я бы поставил под сомнение, что для выбранного устройства нет записи в cgoto.

  2. Учитесь делать что-то надлежащим объектно-ориентированным способом. код должен действительно выглядеть как

    if (selectedUnits[i].pos != selectedUnits[i].gotoPos)