在C#中检查null的问题

时间:2016-07-07 16:35:53

标签: c# null nullreferenceexception

我有以下方法:

void setTexts()
{
    if (queueIn != null)
    {
        queueIn.text = countIn.ToString();
    }

    if (queueOut != null)
    {
        queueOut.text = waitingForPickup.ToString();
    }
}

如果queueIn为null,我希望它什么也不做,但我一直得到一个空引用异常,说queueIn为null。当queueIn为null时,为什么它会进入if块?

编辑:当我添加Debug.Log检查时,问题就消失了,所以它可能没有保存过去的十几次。谢谢你的建议!我对C#很新。

2 个答案:

答案 0 :(得分:1)

您需要检查所有对象deference点。在这种情况下,countIn可能是您的罪犯。

这是一个可能的解决方案,可以删除您的例外。

void setTexts(){
    if (queueIn != null && countIn != null) {
        queueIn.text = countIn.ToString ();
    }
    if (queueOut != null && waitingForPickup != null){
        queueOut.text = waitingForPickup.ToString();
    }
}

答案 1 :(得分:0)

您正在ToString()countIn致电waitingForPickup - 您也需要检查它们。 E.g:

void setTexts(){
    if (queueIn != null && countIn != null) {
        queueIn.text = countIn.ToString();
    }
    if (queueOut != null && waitingForPickup != null) {
        queueOut.text = waitingForPickup.ToString();
    }
}