如果我們使用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