Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İşlevin veya Get erişimcinin yineleyici olduğunu belirtir.
Açıklamalar
Yineleyici bir koleksiyon üzerinde özel yineleme gerçekleştirir. Yineleyici, koleksiyondaki her öğeyi birer birer döndürmek için Yield deyimini kullanır. Bir Yield deyime ulaşıldığında, koddaki geçerli konum korunur. Yineleyici işlevi bir sonraki çağrılışında yürütme bu konumdan yeniden başlatılır.
Yineleyici, işlev olarak veya özellik tanımının erişimcisi Get olarak uygulanabilir. Değiştirici Iterator , yineleyici işlevinin veya Get erişimcinin bildiriminde görünür.
Her İçin... kullanarak istemci kodundan bir yineleyici çağırırsınız . Next Deyimi.
Yineleyici işlevinin veya Get erişimcinin dönüş türü , , IEnumerable<T>IEnumeratorveya IEnumerator<T>olabilirIEnumerable.
Yineleyicinin parametresi ByRef olamaz.
Yineleyici bir olayda, örnek oluşturucusunda, statik oluşturucuda veya statik yıkıcıda gerçekleşemez.
Yineleyici anonim bir işlev olabilir. Daha fazla bilgi için bkz . Yineleyiciler.
Kullanım
Değiştirici Iterator şu bağlamlarda kullanılabilir:
Örnek 1
Aşağıdaki örnekte yineleyici işlevi gösterilmektedir. Yineleyici işlevinin for... içinde bir deyimi vardır Yield. Sonraki döngü. içindeki MainFor Each deyimi gövdesinin her yinelemesi yineleyici işlevine Power bir çağrı oluşturur. Yineleyici işlevine yapılan her çağrı, döngünün bir sonraki yinelemesi Yield sırasında gerçekleşen deyiminin bir sonraki yürütmesine For…Next devam eder.
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
Örnek 2
Aşağıdaki örnekte yineleyici olan bir Get erişimci gösterilmektedir. Değiştirici Iterator özellik bildirimindedir.
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
Ek örnekler için bkz. Yineleyiciler.