XPathNodeIterator.GetEnumerator Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает объект 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 метода.