-1

我在这里有一个选择。两种意见:

一种是读取一个大约一页长的 XML 文件,两次并尝试找出是否可以找到某个属性值并将其分配给字符串。第一次是找出属性是否存在且不为空。第二次读取并赋值。

If([xmlAttribute]!= null){
  string = xmlAttribute;
}

二是只读取同一个 XML 文件一次,然后尝试直接分配值,而不是先尝试找到它。如果失败,它将抛出异常,并且 catch 块会将字符串分配为 null。

try{
  string = [xmlAttribute];
}catch(Exception ex){
  string = null;
}

哪种方式更快?还是有更好的主意?谢谢。

4

3 回答 3

4

创建异常有很多开销——收集有关方法、堆栈跟踪和底层错误的详细信息非常耗时。使用异常作为预期程序逻辑的一部分是糟糕的编码。

尽可能寻找一种方法来检查数据而不抛出异常。

于 2013-08-05T17:48:40.457 回答
0

阅读一次而不是两次会更快。

但这并不一定意味着更好。

于 2013-08-05T17:45:43.090 回答
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();

如何命名扩展方法取决于您。

于 2013-08-05T17:52:54.377 回答