XPathNodeIterator.GetEnumerator 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回 IEnumerator 对象以循环访问所选的节点集。
public:
virtual System::Collections::IEnumerator ^ GetEnumerator();
public virtual System.Collections.IEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Overridable Function GetEnumerator () As IEnumerator
返回
循环访问所选节点集的 IEnumerator 对象。
实现
注解
枚举器定位在对象的当前位置 XPathNodeIterator 。
可通过两种方法循环访问 XPathNavigator 集合,方法是使用 XPathNodeIterator 类。
一种方法是使用 MoveNext 该方法,然后调用 Current 以获取当前 XPathNavigator 实例,如以下示例所示:
while (nodeIterator->MoveNext())
{
XPathNavigator^ n = nodeIterator->Current;
Console::WriteLine(n->LocalName);
}
while (nodeIterator.MoveNext())
{
XPathNavigator n = nodeIterator.Current;
Console.WriteLine(n.LocalName);
}
While nodeIterator.MoveNext()
Dim n As XPathNavigator = nodeIterator.Current
Console.WriteLine(n.LocalName)
End While
另一 foreach
种方法是使用循环调用 GetEnumerator 该方法,并使用返回 IEnumerator 的接口枚举节点,如以下示例所示:
for each (XPathNavigator^ n in nodeIterator)
Console::WriteLine(n->LocalName);
foreach (XPathNavigator n in nodeIterator)
Console.WriteLine(n.LocalName);
For Each n As XPathNavigator In nodeIterator
Console.WriteLine(nav.LocalName)
Next
应使用 MoveNext 该方法, Current 或使用 GetEnumerator 该方法。 合并这两种方法可能会导致意外结果。 例如,如果 MoveNext 首先调用该方法,然后在 GetEnumerator 循环中 foreach
调用该方法,则 foreach
循环不会从集合的开头开始枚举结果,而是从方法之后 Current 的位置开始枚举结果。