如果if的一个bool参数为空,为什么不执行else语句?

本文关键字:为什么不 执行 语句 else 参数 bool if 一个 如果 | 更新日期: 2023-09-27 17:50:24

我有这样的代码片段:

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是空的,但我有referenceLineTwo, else语句永远不会执行。我不知道为什么?它不是这样工作的吗,如果bool失败,if然后继续到else,它应该传递给else。它只是完全跳过内部的if语句和else条件,因为referenceLineOne是空的。我为什么要改正这张支票?怎样改正?

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

如果if的一个bool参数为空,为什么不执行else语句?

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

你应该像这样做null检查

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

或者这个如果你使用c#6

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