Итератор (Visual Basic)
Указывает, что функция или метод доступа Get итератор.
Заметки
Итератор выполняет пользовательскую итерацию по коллекции.Итератор выписку yield используется для возвращения каждый элемент в коллекции одной записи за раз.Оператор Yield при достижении текущего расположения в коде сохраняется.Выполнение будет перезапущено из этого местоположения при следующем вызове функции итератора.
Итератор можно реализовать как функции или в качестве метода доступа Get определения свойства.Модификатор Iterator отображается в объявление функции итератора или метода доступа Get.
Итератор можно вызывать из кода клиента с помощью Оператор For Each... Next (Visual Basic).
Возвращаемый тип функции итератора или метода доступа Get может быть IEnumerable, IEnumerable<T>, IEnumerator или IEnumerator<T>.
Итератор не может содержать любые параметры ByRef.
Итератор не может произойти в событии конструкторе экземпляра, статическом конструкторе или статическом деструкторе.
Итератор может быть анонимной функции.Дополнительные сведения см. в разделе Итераторы (C# и Visual Basic).
Дополнительные сведения об итераторах см. в разделе Итераторы (C# и Visual Basic).
Использование
Модификатор Iterator можно использовать в следующих контекстах:
Пример
Следующий пример демонстрирует функцию итератора.Функция итератора имеет выписку Yield, которая находится внутри цикла For… next.Каждая итерация тела выписки Оператор For Each в Main создает вызов функции итератора Power.Каждый вызов функции итератора переход к следующему выполнению выписки Yield, которая происходит во время следующей итерации цикла 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
В следующем примере показан метод доступа Get, итератор.Модификатор Iterator в объявлении свойства.
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
Дополнительные примеры см. в разделе Итераторы (C# и Visual Basic).