显示除空引用对象之外的所有值
Display all values except the null reference object
我有一个从 XML 文件中提取数据的 foreach 循环,但是有些字段是空白的。当循环尝试提取特定值时,有时会出现空引用异常。有没有办法挑出具有空值的变量并将其设置为空字符串,同时以有效的方式显示所有其他值?为了示例起见,假设地址字段返回空值。
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(id);
XmlNodeList person = xmldoc.SelectNodes("//parent/child");
foreach (XmlNode node in person)
{
try
{
var name = node["name"].InnerText;
var phone = node["phone"].InnerText;
var email = node["email"].InnerText;
var address = node["address"].InnerText;
lblPopulate2.Text = name;
lblPopulate7.Text = address;
lblPopulate5.Text = phone;
lblPopulate6.Text = email;
}
catch(NullReferenceException ex)
{
???
}
finally
{
}
您可以使用 null conditional operator,如果地址节点不存在,它将 return 为 null,否则 InnerText
。
var address = node["address"]?.InnerText;
然后 null coalescing operator 用于设置您的 Text
属性:
lblPopulate7.Text = address ?? string.Empty;
我有一个从 XML 文件中提取数据的 foreach 循环,但是有些字段是空白的。当循环尝试提取特定值时,有时会出现空引用异常。有没有办法挑出具有空值的变量并将其设置为空字符串,同时以有效的方式显示所有其他值?为了示例起见,假设地址字段返回空值。
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(id);
XmlNodeList person = xmldoc.SelectNodes("//parent/child");
foreach (XmlNode node in person)
{
try
{
var name = node["name"].InnerText;
var phone = node["phone"].InnerText;
var email = node["email"].InnerText;
var address = node["address"].InnerText;
lblPopulate2.Text = name;
lblPopulate7.Text = address;
lblPopulate5.Text = phone;
lblPopulate6.Text = email;
}
catch(NullReferenceException ex)
{
???
}
finally
{
}
您可以使用 null conditional operator,如果地址节点不存在,它将 return 为 null,否则 InnerText
。
var address = node["address"]?.InnerText;
然后 null coalescing operator 用于设置您的 Text
属性:
lblPopulate7.Text = address ?? string.Empty;