如果我们使用C#(LINQ to XML)遍历包含一个小(< 100KB)节点XDocument对象是一个更好的做法或更好的性能,明智的使用XElement或标准隐 “var” 型?的LINQ to XML类型声明
画报:
foreach (XElement el in node.Elements())
{
...
}
或
foreach (var el in node.Elements())
{
...
}
如果我们使用C#(LINQ to XML)遍历包含一个小(< 100KB)节点XDocument对象是一个更好的做法或更好的性能,明智的使用XElement或标准隐 “var” 型?的LINQ to XML类型声明
画报:
foreach (XElement el in node.Elements())
{
...
}
或
foreach (var el in node.Elements())
{
...
}
这不会改变任何东西。 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
更换,所以会出现,而执行没有更好的性能。
感谢您的回复!然而,我不同意“不改变任何事情”的陈述,因为编译器必须完成阅读陈述右侧的工作,以便恰当地定义左侧的定义并向左侧提供定义,只需输入例如'IEnumerable
性能没有差别,因为.NET中的类型推断发生在编译时。编译后所有变量都将被强制输入。
此外,没有规则使用var
或变量声明的类型名称。这是个人喜好的问题。有些人喜欢看到他们使用的变量类型,有些人认为类型声明是重复的形式(不是foreach语句的情况,而是简单的变量声明)。
var
当您使用匿名类型时(这就是为什么它被引入)的实际功率。您根本无法指定变量的类型名称:
var people = from p in doc.Descendants("Person")
select new { p.Name, p.Id };
请考虑阅读Implicitly Typed Local Variables文章。
谢谢!但是我确实看到了这个链接,这就是让我在论坛中提出这个问题的原因。我想我现在只是好奇多少时间(我可以忽略)花费在编译右侧以提供左侧的“类型”定义时编译器消化并推断该类型(var )的声明,而不是简单地键入IEnumerable
@ id.ot我不知道为什么编译时间对你很重要,但你为什么不尝试测量它? – svick 2013-04-24 08:56:59
简单地说......我一直在努力的任务就是测试就业,所以我只是想尽我所能。我绝对可以测试/测量它,再次感谢。 – 2013-04-24 10:12:25
您是否认真预计会对性能产生可衡量的影响?为什么? – svick 2013-04-24 08:54:50