如果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函数获得的两行之一。
由于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
}