讓我們假設我用通過在這種情況下,一個節點列表每個循環迭代
foreach(XmlNode nodeP in node.SelectNodes("Property"))
{
propsList.Add(nodeP.Attributes["name"].Value, true);
}
迭代代碼並表達node.SelectNodes(「該物業」),得到的每個每次迭代中評估或一次?
讓我們假設我用通過在這種情況下,一個節點列表每個循環迭代
foreach(XmlNode nodeP in node.SelectNodes("Property"))
{
propsList.Add(nodeP.Attributes["name"].Value, true);
}
迭代代碼並表達node.SelectNodes(「該物業」),得到的每個每次迭代中評估或一次?
只有一次。 foreach語句是語法糖(你的情況)......
{
IEnumerator<XmlNode> enumerator = node.SelectNodes("Property").GetEnumerator();
XmlNode nodeP;
while(enumerator.MoveNext())
{
nodeP = enumerator.Current;
propsList.Add(nodeP.Attributes["name"].Value, true);
}
IDisposable disposable = enumerator as IDisposable;
if(disposable != null) disposable.Dispose();
}
所以要SelectNodes()
實際調用只發生一次。
看起來你在問C#/ .NET。 SelectNodes()調用將進行一次,然後將從返回值(實現IEnumerable)中檢索枚舉器。該枚舉器是在循環中使用的,不需要對SelectNodes()進行後續調用。
你在用什麼語言? – 2009-04-08 13:30:59
我編輯了標籤,因爲這與XML沒有任何關係 - 這只是爲了處理foreach循環的工作原理。如果有人不同意,請隨時恢復。 – 2009-04-08 13:32:44