如何消除XmlNode获取值时的可能为空引用解引用警告?
解决XmlDocument中"可能为空引用的取消引用"警告问题
你的XML结构包含多个<FieldProperties>元素,遍历获取<FieldName>文本时,即便做了null检查仍收到警告,原因是编译器静态分析无法确认两次node["FieldName"]调用返回的是同一个非null实例。以下几种方法可以解决:
方法1:将节点引用存储到变量后检查
把node["FieldName"]的结果赋值给局部变量,再对变量做null检查,编译器能明确识别变量的非null状态:
XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlFields); XmlNodeList nodeList = doc.GetElementsByTagName("FieldProperties"); foreach (XmlNode node in nodeList) { string fieldName = ""; XmlNode fieldNameNode = node["FieldName"]; if (fieldNameNode != null) { fieldName = fieldNameNode.InnerText; } }
方法2:使用null条件运算符简化代码
利用C#的null条件运算符(?.)和空合并运算符(??),一行代码完成赋值并避免警告:
XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlFields); XmlNodeList nodeList = doc.GetElementsByTagName("FieldProperties"); foreach (XmlNode node in nodeList) { string fieldName = node["FieldName"]?.InnerText ?? ""; }
补充说明
?.运算符会在左侧对象为null时直接返回null,后续的??运算符将null替换为空字符串,既完成了空值处理,又让编译器清晰判断不会出现空引用。
内容的提问来源于stack exchange,提问作者Brendan Vogt
相关产品推荐
相关产品推荐

