Share via


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)

IteratorStateMachineAttribute

Altre risorse

Iteratori (C# e Visual Basic)