Sdílet prostřednictvím


Iterátor (Visual Basic)

Určuje, že funkce nebo Get přístupový objekt je iterace.

Poznámky

Iterační provede vlastní iterace v kolekci.Iterace používá výnos příkaz vrátit každý prvek v jedné kolekci najednou.Když Yield prohlášení je dosaženo, je zachovány aktuální umístění v kódu.Spuštění je restartován z tohoto umístění při příštím volání funkce iterační.

Iterace lze implementovat jako funkce nebo Get přístupový objekt vlastnosti definice.Iterator Modifikátor se zobrazí v deklaraci funkce iterační nebo Get přístupový objekt.

Iterace volat z kódu klienta pomocí For Each...Next – příkaz (Visual Basic).

Návratový typ funkce iterační nebo Get přístupový objekt může být IEnumerable, IEnumerable, IEnumerator, nebo IEnumerator.

Iterace nemůže obsahovat ani ByRef parametry.

Iterace nemůže dojít k události, konstruktor instance, statický konstruktor nebo statický objekt.

Iterace může být anonymní funkce.Další informace naleznete v tématu Iterátory (C# and Visual Basic).

Další informace o u iterátorů viz Iterátory (C# and Visual Basic).

Použití

Iterator Modifikátor lze v těchto kontextech:

Příklad

Příklad funkce iterační aplikace.Iterační funkce má Yield příkaz, který je uvnitř pro…Další smyčky.Každém opakování pro každou prohlášení subjektu v Main vytvoří volání Power iterační funkce.Každé volání funkce iterační pokračuje další provádění Yield prohlášení během další opakování For…Next smyčky.

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

Následující příklad ukazuje Get přístupový objekt, který je iterace.Iterator Je modifikátor deklarace vlastnosti.

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

Další příklady naleznete v tématu Iterátory (C# and Visual Basic).

Viz také

Referenční dokumentace

Yield – příkaz (Visual Basic)

IteratorStateMachineAttribute

Další zdroje

Iterátory (C# and Visual Basic)