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