LINQ to XML类型声明

时间:2013-04-24 02:29:27

标签: c# linq linq-to-xml

如果我们使用 C#LINQ to XML 来循环播放小(<100kb) {中包含的节点{3}} 对象使用 XDocument 或标准隐含“<更好的做法或更好的性能strong> XElement “输入?

画报:

foreach (XElement el in node.Elements())
{
    ...
}

foreach (var el in node.Elements())
{
    ...
}

2 个答案:

答案 0 :(得分:4)

这不会改变任何事情。 var只是开发人员编写更短代码的简短形式。在您编写的情况下,编译时会重新调整为XElement

var是强类型的!请不要理解var就像PHP中的类型自由变量一样。

一个例子:

PHP

$i = 3;
$i = new MyObject();
//Everything is fine

C#

var i = 3;
i = new MyObject();
//compiler error!

所以

之间没有区别
var i = 3;

int i = 3;

编译后var完全被int取代,因此在执行时没有更好的性能。

答案 1 :(得分:1)

性能没有区别,因为.NET中的类型推断发生在编译时。编译后所有变量都将被强类型化。

对于变量声明,使用var或类型名称也没有规则。这是个人喜好的问题。有些人喜欢看他们使用的变量类型,有些人认为类型声明是重复的形式(不是foreach语句的情况,而是简单的变量声明)。

当您使用匿名类型时,var的真正威力就会消失(这就是它被引入的原因)。您根本无法指定变量的类型名称:

var people = from p in doc.Descendants("Person")
             select new { p.Name, p.Id };

考虑阅读Implicitly Typed Local Variables文章。