Spécifie qu’une fonction ou un accesseur Get est un itérateur.
Notes
Un itérateur effectue une itération personnalisée sur une collection. Un itérateur utilise l’instruction Yield pour retourner chaque élément dans la collection un par un. Quand une instruction Yield est atteinte, l’emplacement actif dans le code est conservé. L'exécution redémarrera à partir de cet emplacement la prochaine fois que la fonction d'itérateur sera appelée.
Un itérateur peut être implémenté en tant que fonction ou accesseur Get d’une définition de propriété. Le modificateur Iterator apparaît dans la déclaration de la fonction d’itérateur ou de l’accesseur Get.
L’exemple suivant illustre une fonction d’itérateur. La fonction d’itérateur a une instruction Yield qui se trouve à l’intérieur d’une boucle For…Next. Chaque itération du corps d’instruction For Each dans Main crée un appel à la fonction d’itérateur Power. Chaque appel à la fonction d'itérateur continue vers l'exécution suivante de l'instruction Yield, qui se produit pendant l'itération suivante de la boucle For…Next.
VB
Sub Main()
ForEach number In Power(2, 8)
Console.Write(number & " ")
Next' Output: 2 4 8 16 32 64 128 256
Console.ReadKey()
EndSubPrivateIteratorFunction Power(
ByVal base AsInteger, ByVal highExponent AsInteger) _
As System.Collections.Generic.IEnumerable(OfInteger)
Dim result = 1For counter = 1To highExponent
result = result * base
Yield result
NextEndFunction
Exemple 2
L'exemple suivant illustre un accesseur Get qui est un itérateur. Le modificateur Iterator se trouve dans la déclaration de propriété.
VB
Sub Main()
Dim theGalaxies AsNew Galaxies
ForEach theGalaxy In theGalaxies.NextGalaxy
With theGalaxy
Console.WriteLine(.Name & " " & .MegaLightYears)
EndWithNext
Console.ReadKey()
EndSubPublicClass Galaxies
PublicReadOnlyIteratorProperty NextGalaxy _
As System.Collections.Generic.IEnumerable(Of Galaxy)
GetYieldNew Galaxy With {.Name = "Tadpole", .MegaLightYears = 400}
YieldNew Galaxy With {.Name = "Pinwheel", .MegaLightYears = 25}
YieldNew Galaxy With {.Name = "Milky Way", .MegaLightYears = 0}
YieldNew Galaxy With {.Name = "Andromeda", .MegaLightYears = 3}
EndGetEndPropertyEndClassPublicClass Galaxy
PublicProperty Name AsStringPublicProperty MegaLightYears AsIntegerEndClass
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner des problèmes et des demandes de tirage (pull requests). Pour plus d’informations, consultez notre guide du contributeur.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Rejoignez la série de rencontres pour créer des solutions d’IA évolutives basées sur des cas d’utilisation réels avec d’autres développeurs et experts.