如何比较两个Hashtables?

时间:2011-12-21 12:31:43

标签: c#

我正在XNA中开发一个小型RTS。

我将每个单位“转到”位置设置为他们应该去的向量。如果我不比较两个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"]))

1 个答案:

答案 0 :(得分:3)

  1. 当您将null(从某个哈希表中的缺失条目)转换为intfloat时,会发生NullReferenceExceptions。在不知道您的代码的情况下,我会猜测cgoto中没有对所选单元的条目。

  2. 学会以适当的面向对象的方式做事。代码应该看起来像

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