我有以下代码:
searchResults.SearchResultCollection.Add(
new SearchResult()
{
Header =
HttpUtility.HtmlDecode(
htmlDocument.DocumentNode
.SelectSingleNode(initialXPath + "h3")
.InnerText),
Link = HttpUtility.HtmlDecode(
htmlDocument.DocumentNode
.SelectSingleNode(initialXPath + "div/cite")
.InnerText)
}
);
有时 htmlDocument.DocumentNode.SelectSingleNode(....) 返回 null 并且我的应用程序因 NullReferenceException 而崩溃。当然,我可以编写代码来检查空引用的返回值,但是代码会过于冗长。什么是优雅的方式来做到这一点?
最佳答案
您可以在 XmlNode 上创建一个扩展方法,如下所示:
public static class ExtensionMethods
{
public string GetNodeText(this XmlNode node, string xPath)
{
var childNode = node.SelectSingleNode(xPath);
return (childNode == null)
? "" : childNode.InnerText;
}
}
searchResults.SearchResultCollection.Add(
new SearchResult()
{
Header = HttpUtility.HtmlDecode(
htmlDocument.DocumentNode.GetNodeText(initialXPath + "h3"),
Link = HttpUtility.HtmlDecode(
htmlDocument.DocumentNode.GetNodeText(initialXPath + "div/cite")
}
);
就我个人而言,我可能只是把它搞砸并明确地进行空测试,不过:)
关于c# - 检查空引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2451516/