如果if的bool参数之一为null,为什么else语句不会被执行?

时间:2015-05-22 01:14:22

标签: c# unity3d

我在这里有这段代码:

public void ReDrawParallelLines(string lineName, string viewType)
    {
        var referenceLineOne = GetLineParams(viewType + ReferenceEnum.One.ToString() + linename);
        var referenceLineTwo = GetLineParams(viewType + ReferenceEnum.Two.ToString() + linename);

        if (lineName == referenceLineOne.lineParams.lineName)
        {

           //Do certain action with referencelineone
        }
        else if (lineName == referenceLineTwo.lineParams.lineName)
        {
            //Do same action but with referencelinetwo

        }
    }

我注意到如果referenceLineOne为null但我有referenceLineTwo,则else语句永远不会被执行。我不知道为什么?它不起作用,如果bool失败了if然后继续到else,它应该传递给else。它只是完全跳过if语句和else条件,因为referenceLineOne为null。为什么以及如何更正此检查?

基本上,我正在传递一个行名称,我想查看它是否等于我从GetLineParams函数获得的两行之一。

1 个答案:

答案 0 :(得分:2)

由于referenceLineOne为空,您将获得一个异常,这就是为什么它绕过else if并跳转到其他地方。

你应该像这样进行空检查

if (referenceLineOne != null && lineName == referenceLineOne.lineParams.lineName)
{
   //Do certain action with referencelineone
}

或者如果您使用c#6

if (lineName == referenceLineOne?.lineParams.lineName)
{
   //Do certain action with referencelineone
}