[英]for each loop iteration
讓我們假設我用來遍歷節點列表的代碼
foreach(XmlNode nodeP in node.SelectNodes("Property"))
{
propsList.Add(nodeP.Attributes["name"].Value, true);
}
在這種情況下,表達式node.SelectNodes(“ Property”)在每次或一次的每次迭代期間是否得到評估?
只有一次。 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()的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.