Sdílet prostřednictvím


Iterace (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í Pro každý...Další příkaz (Visual Basic).

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

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 U iterátorů (C# a Visual Basic).

Další informace o u iterátorů viz U iterátorů (C# a 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 U iterátorů (C# a Visual Basic).

Viz také

Referenční dokumentace

Příkaz yield (Visual Basic)

IteratorStateMachineAttribute

Další zdroje

U iterátorů (C# a Visual Basic)