Iterador (Visual Basic)
Especifica que una función o un descriptor de Get es un iterador.
Comentarios
Un iterador realiza una iteración personalizada en una colección. Un iterador utiliza la instrucción de producción para devolver todos los elementos de la colección de uno en uno. Cuando se alcanza una instrucción de Yield , la ubicación actual en el código se conserva. La ejecución se reinicia desde esa ubicación la próxima vez que la función de iterador se denomina.
Un iterador se puede implementar como función o como descriptor de Get de una definición de propiedad. El modificador de Iterator aparece en la declaración de la función de iterador o de descriptor de acceso Get .
Se llama a un iterador de código de cliente mediante Instrucción For Each...Next (Visual Basic).
Tipo de valor devuelto de una función de iterador o el descriptor de Get puede ser IEnumerable, IEnumerable, IEnumerator, o IEnumerator.
Un iterador no puede tener ningún parámetro de ByRef .
Un iterador no puede aparecer en un evento, un constructor de instancia, un constructor estático, o destructor estático.
Un iterador puede ser una función anónima. Para obtener más información, vea Iteradores (C# y Visual Basic).
Para obtener más información sobre los iteradores, vea Iteradores (C# y Visual Basic).
Uso
El modificador Iterator se puede utilizar en estos contextos:
Ejemplo
El ejemplo siguiente se muestra una función de iterador. La función de iterador tiene una instrucción de Yield que está dentro de un bucle de For… Next . Cada iteración del cuerpo de instrucción de For Each en Main crea una llamada a la función de iterador de Power . Cada llamada a la función de iterador continúa a la ejecución siguiente de la instrucción de Yield , que durante la siguiente iteración del bucle de 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
El ejemplo siguiente se muestra un descriptor de acceso de Get que sea un iterador. El modificador de Iterator está en la declaración de propiedad.
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 obtener otros ejemplos, vea Iteradores (C# y Visual Basic).
Vea también
Referencia
Yield (Instrucción) (Visual Basic)