Iteratore (Visual Basic)
Specifica che una funzione o una funzione di accesso di Get è un iteratore.
Note
Un iteratore esegue un'iterazione personalizzata in una raccolta.Un iteratore utilizza l'istruzione di Le prestazioni per restituire ogni elemento della raccolta uno alla volta.Quando un'istruzione di Yield viene raggiunto, la posizione corrente nel codice vengono mantenute.L'esecuzione verrà riavviata da tale percorso alla successiva esecuzione della funzione di iteratore è denominata.
Un iteratore può essere implementato come funzione o come funzione di accesso di Get di una definizione di proprietà.Il modificatore di Iterator viene visualizzato nella dichiarazione della funzione di iteratore o della funzione di accesso di Get .
Chiama un iteratore dal codice client utilizzando Istruzione For Each...Next (Visual Basic).
Il tipo restituito di una funzione di iteratore o di funzione di accesso di Get può essere IEnumerable, IEnumerable<T>, IEnumerator, o IEnumerator<T>.
Un iteratore non può avere parametri di ByRef .
Un iteratore non può verificarsi in un evento, in un costruttore di istanza, in un costruttore statico, o un distruttore statico.
Un iteratore può essere una funzione anonima.Per ulteriori informazioni, vedere Iteratori (C# e Visual Basic).
Per ulteriori informazioni sugli iteratori, vedere Iteratori (C# e Visual Basic).
Utilizzo
Il modificatore Iterator può essere utilizzato nei seguenti contesti:
Esempio
Nell'esempio seguente viene illustrata una funzione di iteratore.La funzione di iteratore ha un'istruzione di Yield presente in un ciclo di per… seguente .Ogni iterazione del corpo dell'istruzione di For Each in Main crea una chiamata alla funzione iteratore di Power .Ogni chiamata alla funzione di iteratore consente l'esecuzione dell'dell'istruzione di Yield , che si verifica durante l'iterazione successiva del ciclo di For…Next .
Sub Main()
For Each number In Power(2, 8)
Console.Write(number & " ")
Next
' Output: 2 4 8 16 32 64 128 256
Console.ReadKey()
End Sub
Private Iterator Function Power(
ByVal base As Integer, ByVal highExponent As Integer) _
As System.Collections.Generic.IEnumerable(Of Integer)
Dim result = 1
For counter = 1 To highExponent
result = result * base
Yield result
Next
End Function
Nell'esempio seguente viene illustrata una funzione di accesso di Get che è un iteratore.Il modificatore di Iterator nella dichiarazione di proprietà.
Sub Main()
Dim theGalaxies As New Galaxies
For Each theGalaxy In theGalaxies.NextGalaxy
With theGalaxy
Console.WriteLine(.Name & " " & .MegaLightYears)
End With
Next
Console.ReadKey()
End Sub
Public Class Galaxies
Public ReadOnly Iterator Property NextGalaxy _
As System.Collections.Generic.IEnumerable(Of Galaxy)
Get
Yield New Galaxy With {.Name = "Tadpole", .MegaLightYears = 400}
Yield New Galaxy With {.Name = "Pinwheel", .MegaLightYears = 25}
Yield New Galaxy With {.Name = "Milky Way", .MegaLightYears = 0}
Yield New Galaxy With {.Name = "Andromeda", .MegaLightYears = 3}
End Get
End Property
End Class
Public Class Galaxy
Public Property Name As String
Public Property MegaLightYears As Integer
End Class
Per ulteriori esempi, vedere Iteratori (C# e Visual Basic).
Vedere anche
Riferimenti
Istruzione Yield (Visual Basic)