簡體   English   中英

對於每個循環迭代

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM