Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Specifica che una funzione o Get una funzione di accesso è un iteratore.
Osservazioni:
Un iteratore esegue un'iterazione personalizzata su una raccolta. Un iteratore usa l'istruzione Yield per restituire ogni elemento della raccolta uno alla volta. Quando viene raggiunta un'istruzione Yield , viene mantenuta la posizione corrente nel codice. L'esecuzione viene riavviata da tale posizione alla successiva chiamata della funzione iteratore.
Un iteratore può essere implementato come funzione o come funzione Get di accesso di una definizione di proprietà. Il Iterator modificatore viene visualizzato nella dichiarazione della funzione iteratore o Get della funzione di accesso.
Si chiama un iteratore dal codice client usando for each... Istruzione successiva.
Il tipo restituito di una funzione iteratore o Get di una funzione di accesso può essere IEnumerable, IEnumerable<T>, IEnumeratoro IEnumerator<T>.
Un iteratore non può avere parametri ByRef .
Un iteratore non può essere utilizzato in un evento, un costruttore di istanza, un costruttore statico o un distruttore statico.
Un iteratore può essere una funzione anonima. Per altre informazioni, vedere Iteratori.
Uso
Il Iterator modificatore può essere usato in questi contesti:
Esempio 1
Nell'esempio seguente viene illustrata una funzione iteratore. La funzione iteratore ha un'istruzione Yield che si trova all'interno di un for... Ciclo successivo . Ogni iterazione del corpo dell'istruzione For Each in Main crea una chiamata alla Power funzione iteratore. Ogni chiamata alla funzione iteratore procede all'esecuzione successiva dell'istruzione Yield , che si verifica durante l'iterazione successiva del For…Next ciclo.
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
Esempio 2
Nell'esempio seguente viene illustrata una Get funzione di accesso che è un iteratore. Il Iterator modificatore si trova 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 altri esempi, vedere Iteratori.