IEnumerator.MoveNext Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Sposta l'enumeratore all'elemento successivo della raccolta.
public:
bool MoveNext();
public bool MoveNext ();
abstract member MoveNext : unit -> bool
Public Function MoveNext () As Boolean
Restituisce
true
se l'enumeratore è stato spostato correttamente in avanti in corrispondenza dell'elemento successivo, false
se l'enumeratore ha superato la fine della raccolta.
Eccezioni
La raccolta è stata modificata dopo la creazione dell'enumeratore.
Esempio
Nell'esempio di codice seguente viene illustrata l'implementazione delle IEnumerator interfacce per una raccolta personalizzata. In questo esempio non MoveNext viene chiamato in modo esplicito, ma viene implementato per supportare l'uso di foreach
(for each
in Visual Basic). Questo esempio di codice fa parte di un esempio più grande per l'interfaccia IEnumerator .
// When you implement IEnumerable, you must also implement IEnumerator.
public class PeopleEnum : IEnumerator
{
public Person[] _people;
// Enumerators are positioned before the first element
// until the first MoveNext() call.
int position = -1;
public PeopleEnum(Person[] list)
{
_people = list;
}
public bool MoveNext()
{
position++;
return (position < _people.Length);
}
public void Reset()
{
position = -1;
}
object IEnumerator.Current
{
get
{
return Current;
}
}
public Person Current
{
get
{
try
{
return _people[position];
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}
}
' When you implement IEnumerable, you must also implement IEnumerator.
Public Class PeopleEnum
Implements IEnumerator
Public _people() As Person
' Enumerators are positioned before the first element
' until the first MoveNext() call.
Dim position As Integer = -1
Public Sub New(ByVal list() As Person)
_people = list
End Sub
Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
position = position + 1
Return (position < _people.Length)
End Function
Public Sub Reset() Implements IEnumerator.Reset
position = -1
End Sub
Public ReadOnly Property Current() As Object Implements IEnumerator.Current
Get
Try
Return _people(position)
Catch ex As IndexOutOfRangeException
Throw New InvalidOperationException()
End Try
End Get
End Property
End Class
Commenti
Dopo aver creato un enumeratore o una volta chiamato il Reset metodo, un enumeratore viene posizionato prima del primo elemento della raccolta e la prima chiamata al MoveNext metodo sposta l'enumeratore sul primo elemento della raccolta.
Se MoveNext passa la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e MoveNext restituisce false
. Quando l'enumeratore si trova in questa posizione, le chiamate successive per restituire false
anche fino a MoveNext quando Reset non viene chiamato.
Se le modifiche vengono apportate alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, il comportamento di MoveNext è indefinito.