即使我穿吊带裤,R#也告诉我需要腰带。我有这样的代码:
private static ItemGroup GetItemGroupsForXMLElement(XElement itemGroup)
{
return new ItemGroup
{
Id = Convert.ToInt32(itemGroup.Element("Id").Value),
item_group_id = itemGroup.Element("item_group_id").Value,
name = itemGroup.Element("name").Value
};
}
...... R#抱怨说,这可能是灾难性的,并且卫冕NRE可能会降低我的头脑; IOW,我需要在他们达到这一点之前控制它们。
所以我添加了代码来测试数据元素的nullness和撤消(如果有的话)(null):
private static ItemGroup GetItemGroupsForXMLElement(XElement itemGroup)
{
var IdElement = itemGroup.Element("Id");
var item_group_idElement = itemGroup.Element("item_group_id");
var nameElement = itemGroup.Element("name");
if ((null == IdElement) || (null == item_group_idElement) ||
(null == nameElement)) return null;
return new ItemGroup
{
Id = Convert.ToInt32(itemGroup.Element("Id").Value),
item_group_id = itemGroup.Element("item_group_id").Value,
name = itemGroup.Element("name").Value
};
}
......但仍然没有安抚R#;我仍然得到了可能的" System.NullReferenceException" s。显然,它并没有看到各种元素已经被测试为null,而我只能进入"返回新的ItemGroup"代码块如果一切顺利的话。
如何以R#识别出我已经这样做的方式测试这些元素为空?
答案 0 :(得分:4)
您可以使用显式转换而不是访问Value
属性
return new ItemGroup
{
Id = (int)itemGroup.Element("Id"),
item_group_id = (string)itemGroup.Element("item_group_id"),
name = (string)itemGroup.Element("name")
};