Iterator (Visual Basic)

Określa, że funkcja lub Get akcesor jest iterację.

Uwagi

Iteratora wykonuje niestandardowe iteracji w kolekcji.Używa iterację plon instrukcji do zwracania każdego elementu w kolekcji, jeden na raz.Gdy Yield instrukcji zostanie osiągnięty, bieżącej lokalizacji w kodzie jest zachowywana.Wykonanie jest ponownie z tej lokalizacji przy następnym wywołaniu funkcji iteratora.

Iterację można zaimplementować funkcję lub jako Get akcesor definicji właściwości.Iterator Modyfikator pojawia się w deklaracji funkcji iteratora lub Get akcesor.

Wywołanie iterację z kodu klienta za pomocą For Each...Next — Instrukcja (Visual Basic).

Zwracany typ funkcji iteratora lub Get akcesor może być IEnumerable, IEnumerable, IEnumerator, lub IEnumerator.

Iterację nie mogą mieć ByRef parametry.

Iterację nie może wystąpić w zdarzenia, konstruktor wystąpień, konstruktorze statycznym lub statyczne destruktor.

Iterację może być funkcją anonimową.Aby uzyskać więcej informacji, zobacz Iteratory (C# i Visual Basic).

Aby uzyskać więcej informacji na temat Iteratory, zobacz Iteratory (C# i Visual Basic).

Sposób użycia

Iterator Modyfikator mogą być używane w tych kontekstach:

Przykład

Poniższy przykład demonstruje funkcja sterująca.Funkcja sterująca ma Yield instrukcji, która znajduje się wewnątrz o...Dalej pętli.Każda iteracja dla każdego organowi oświadczenie w Main tworzy wywołanie Power funkcja sterująca.Każde wywołanie funkcji iteratora przechodzi do następnej wykonanie Yield instrukcji, który występuje podczas następnej iteracji For…Next pętli.

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

Poniższy przykład ilustruje Get akcesora, który jest iterację.Iterator Jest modyfikator w deklaracji właściwości.

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

Dodatkowe przykłady, zobacz Iteratory (C# i Visual Basic).

Zobacz też

Informacje

Yield — Instrukcja (Visual Basic)

IteratorStateMachineAttribute

Inne zasoby

Iteratory (C# i Visual Basic)