我在这里有一个选择。两个意见:
一个是读取XML文件,该文件大约有一页长,两次,并试图找出是否可以找到某个属性值并将其分配给字符串。第一次是找出属性是否存在而不是null。第二次阅读并分配值。
If([xmlAttribute]!= null){
string = xmlAttribute;
}
两个只是读取相同的XML文件一次并尝试直接分配值而不先尝试找到它。如果失败,它将抛出异常,catch块将字符串赋值为null。
try{
string = [xmlAttribute];
}catch(Exception ex){
string = null;
}
哪种方式更快?或者更好的主意? 感谢。
答案 0 :(得分:4)
创建异常需要很多开销 - 有关方法,堆栈跟踪和基础错误的详细信息非常耗时。使用异常作为预期程序逻辑的一部分是编码不佳。
寻找一种检查数据的方法,尽可能不抛出异常。
答案 1 :(得分:0)
阅读一次而不是两次会更快。
但这并不一定意味着更好。
答案 2 :(得分:0)
假设您正在使用Linq to XML:
var element = xml.Element("Name");
var attribute = element == null ? null : element.Attribute("first");
var value = attribute == null ? null : attribute.Value;
我通常会添加一些扩展方法来简化此过程,例如:
var value = xml.Element("Name").OptionalAttribute("first").ValueOrDefault();
如何命名扩展方法取决于您。