Iterador (Visual Basic)
Especifica que uma função ou Get o acessador é um iterador.
Comentários
Um iterador executa uma iteração personalizada em uma coleção.Um iterador usa a Yield instrução para retornar cada elemento da coleção ao mesmo tempo.Quando um Yield instrução for atingida, o local atual no código é retido.Execução for reiniciada nesse local na próxima vez que a função do iterador é chamada.
Um iterador pode ser implementado como uma função ou como uma Get assessor de uma definição de propriedade.O Iterator modificador aparece na declaração da função iterador ou Get acessador.
Chamar um iterador do código de cliente usando um Para cada...Próxima instrução (Visual Basic).
O tipo de retorno de uma função de iterador ou Get pode ser acessador IEnumerable, IEnumerable<T>, IEnumerator, ou IEnumerator<T>.
Um iterador não pode ter qualquer ByRef parâmetros.
Um iterador não pode ocorrer em um evento, construtor de instância, o construtor estático ou destruidor estático.
Um iterador pode ser uma função anônima.Para mais informações, consulte Iteradores (C# e Visual Basic).
Para obter mais informações sobre os iteradores, consulte Iteradores (C# e Visual Basic).
Uso
O modificador Iterator pode ser utilizado nestes contextos:
Exemplo
O exemplo a seguir demonstra uma função do iterador.Função iterador tem um Yield instrução dentro de um for …Próxima loop.Cada iteração de para cada corpo de instrução em Main cria uma chamada para o Power função do iterador.Cada chamada para a função de iterador passa para a próxima execução do Yield instrução, que ocorre durante a próxima iteração do For…Next loop.
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
O exemplo a seguir demonstra uma Get o acessador é um iterador.O Iterator é modificador na declaração da propriedade.
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
Para exemplos adicionais, consulte Iteradores (C# e Visual Basic).
Consulte também
Referência
Instrução yield (Visual Basic)