c# - 构建一个可能包含 null ref 的对象
c# - Building an object that might contains null ref
我正在尝试构建具有以下属性的对象
public class data
{
public string Ref{ get; set; }
public string Number { get; set; }
public string Type{ get; set; }
public string? Origin{ get; set; }
};
问题是:ref / Number / Type,我一定会在我的 XML 文件中找到这些数据,但在某些情况下 Origin 可能为空。
下面的代码是通过XML文件中的一些elt循环的,有时我们可以在子元素集合中找到origin,有时找不到origin,因为没有子元素匹配条件。
如何在构建对象的同时处理这个 null 异常?如果找不到,目标是有一个 Origin = ""。
containerData.Add(new dataContainer()
{
Ref= elt.Descendants(ns + "Ref")
.FirstOrDefault()
.Value,
Number = elt.Descendants(ns+"Number")
.FirstOrDefault()
.Value,
Type = elt.Descendants(ns + "Type")
.FirstOrDefault()
.Value,
Origin = subElement.Where(x => x.Element(ns + "Name").Value == "Origin")
.Select(x => x.Element(ns + "Value"))
.SingleOrDefault()
.Value,
});
试图获取 Origin 可为 null 的类型,但对象在构建时仍然抛出异常。
.SingleOrDefault()
可能 return null
,因此您可以使用 .SingleOrDefault()?.Value
来防止这种情况(=> 如果不为空,则仅访问 Value
)。
这会给您留下一个值或 null
。如果你想在这种情况下有一个空字符串(如果 null
),你可以使用 .SingleOrDefault()?.Value ?? ""
.
供参考:
我正在尝试构建具有以下属性的对象
public class data
{
public string Ref{ get; set; }
public string Number { get; set; }
public string Type{ get; set; }
public string? Origin{ get; set; }
};
问题是:ref / Number / Type,我一定会在我的 XML 文件中找到这些数据,但在某些情况下 Origin 可能为空。
下面的代码是通过XML文件中的一些elt循环的,有时我们可以在子元素集合中找到origin,有时找不到origin,因为没有子元素匹配条件。
如何在构建对象的同时处理这个 null 异常?如果找不到,目标是有一个 Origin = ""。
containerData.Add(new dataContainer()
{
Ref= elt.Descendants(ns + "Ref")
.FirstOrDefault()
.Value,
Number = elt.Descendants(ns+"Number")
.FirstOrDefault()
.Value,
Type = elt.Descendants(ns + "Type")
.FirstOrDefault()
.Value,
Origin = subElement.Where(x => x.Element(ns + "Name").Value == "Origin")
.Select(x => x.Element(ns + "Value"))
.SingleOrDefault()
.Value,
});
试图获取 Origin 可为 null 的类型,但对象在构建时仍然抛出异常。
.SingleOrDefault()
可能 return null
,因此您可以使用 .SingleOrDefault()?.Value
来防止这种情况(=> 如果不为空,则仅访问 Value
)。
这会给您留下一个值或 null
。如果你想在这种情况下有一个空字符串(如果 null
),你可以使用 .SingleOrDefault()?.Value ?? ""
.
供参考: