在下面的代码中,如何以“良好实践”的方式检查空引用异常?
if (primaryMenu.ChildNodes.Any(p=>VirtualPathUtility.GetFileName(p.SiteURL).Equals(selectedPage)))
{
primaryMenuTab.Attributes.Add("class", "current");
}
我现在这样做的方式是(但是JetBrain ReSharper不会接受它,并在下面的部分继续警告我:VirtualPathUtility.GetFileName(p.SiteURL),这是可以理解的),
if (primaryMenu.ChildNodes.Any(p=> p.SiteURL != null && VirtualPathUtility.GetFileName(p.SiteURL).Equals(selectedPage)))
{
primaryMenuTab.Attributes.Add("class", "current");
}
菜单具有以下结构,
public class MultiLevelMenuNodeList
{
public string Name { get; set; }
public string Permission { get; set; }
public string SiteURL { get; set; }
public string Visibility { get; set; }
public List<SingleLevelMenuNodeList> ChildNodes { get; set; }
}
public class SingleLevelMenuNodeList
{
public string Name { get; set; }
public string Permission { get; set; }
public string SiteURL { get; set; }
public string Visibility { get; set; }
public string TabPosition { get; set; }
}
提前感谢您提出建议和提示。我有点沉迷于stackoverflow:)
答案 0 :(得分:3)
一个简单的解决方案就是使用==这是空的安全:
if (primaryMenu.ChildNodes.Any(p =>
VirtualPathUtility.GetFileName(p.SiteURL) == selectedPage))
(假设GetFileName
本身可以处理空输入;否则将第一次空检查放回去。)