1

如果我们使用C# ( LINQ to XML )循环遍历包含在小 (< 100kb) XDocument对象中的节点,使用XElement或标准隐式“ var ”类型是更好的做法还是更好的性能?

插图:

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

或者

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

2 回答 2

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,因此执行时不会有更好的性能。

于 2013-04-24T07:09:34.517 回答
1

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

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

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

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

考虑阅读Implicitly Typed Local Variables文章。

于 2013-04-24T07:18:27.987 回答