我在这里有这段代码:
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函数获得的两行之一。
答案 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
}