English 中文(简体)
对于每个循环迭代
原标题:
  • 时间:2009-04-08 13:28:55
  •  标签:

让我们假设我用来遍历节点列表的代码

foreach(XmlNode nodeP in node.SelectNodes("Property"))
{
  propsList.Add(nodeP.Attributes["name"].Value, true);
}

在这种情况下,表达式节点.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()。





相关问题
热门标签