Iteratora (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ą Dla każdego...Następna instrukcja (Visual Basic).
Zwracany typ funkcji iteratora lub Get akcesor może być IEnumerable, IEnumerable<T>, IEnumerator, lub IEnumerator<T>.
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
Instrukcja yield (Visual Basic)