Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Určuje, že funkce nebo Get příslušenství je iterátor.
Poznámky
Iterátor provádí vlastní iteraci kolekce. Iterátor používá příkaz Yield k vrácení každého prvku v kolekci po jednom.
Yield Po dosažení příkazu se zachová aktuální umístění v kódu. Spuštění se restartuje z daného umístění při příštím volání funkce iterátoru.
Iterátor lze implementovat jako funkci nebo jako Get přístup k definici vlastnosti.
Iterator Modifikátor se zobrazí v deklaraci funkce nebo Get příslušenství iterátoru.
Iterátor z klientského kódu zavoláte pomocí příkazu For Each... Next – příkaz.
Návratový typ funkce iterátoru nebo Get přístupového objektu může být IEnumerable, IEnumerable<T>, IEnumerator, nebo IEnumerator<T>.
Iterátor nemůže mít žádné ByRef parametry.
Iterátor nelze použít v události, konstruktoru instance, statickém konstruktoru nebo statickém destruktoru.
Iterátor může být anonymní funkce. Další informace najdete v tématu Iterátory.
Použití
Iterator Modifikátor lze použít v těchto kontextech:
Příklad 1
Následující příklad ukazuje funkci iterátoru. Funkce iterátoru má Yield příkaz, který je uvnitř objektu For... Další smyčka. Každá iterace textu příkazu For Each vytvoří Main volání funkce iterátoru Power . Každé volání funkce iterátoru pokračuje k dalšímu spuštění Yield příkazu, ke kterému dochází během další iterace smyčky 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
Příklad 2
Následující příklad ukazuje Get přístup, který je iterátor.
Iterator Modifikátor je v deklaraci 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 najdete v tématu Iterátory.