Implements IEnumerable : IEnumerable « Collections « VB.Net Tutorial






Option Strict On

 Imports System
 Imports System.Collections


 Public Class MyArray : Implements IEnumerable
     Private strings( ) As String
     Private ctr As Integer = 0

     Private Class ListBoxEnumerator
         Implements IEnumerator
         Private currentListBox As MyArray
         Private index As Integer

         Public Sub New(ByVal currentListBox As MyArray)
             Me.currentListBox = currentListBox
             index = -1
         End Sub

         Public Function MoveNext( ) As Boolean _
           Implements IEnumerator.MoveNext
             index += 1
             If index >= currentListBox.strings.Length Then
                 Return False
             Else
                 Return True
             End If
         End Function

         Public Sub Reset( ) _
           Implements IEnumerator.Reset
             index = -1
         End Sub

         Public ReadOnly Property Current( ) As Object _
         Implements IEnumerator.Current
             Get
                 Return currentListBox(index)
             End Get
         End Property
     End Class  ' end nested class

     Public Function GetEnumerator( ) As IEnumerator _
     Implements IEnumerable.GetEnumerator
         Return New ListBoxEnumerator(Me)
     End Function

     Public Sub New( _
       ByVal ParamArray initialStrings( ) As String)
         ReDim strings(7)

         Dim s As String
         For Each s In initialStrings
             strings(ctr) = s
             ctr += 1
         Next
     End Sub
     Public Sub Add(ByVal theString As String)
         strings(ctr) = theString
         ctr += 1
     End Sub

     Default Public Property Item( _
       ByVal index As Integer) As String
         Get
             If index < 0 Or index >= strings.Length Then
                 ' handle bad index
                 Exit Property
             End If
             Return strings(index)
         End Get
         Set(ByVal Value As String)
             strings(index) = Value
         End Set
     End Property

     Public Function GetNumEntries( ) As Integer
         Return ctr
     End Function

 End Class

 Public Class Tester

     Shared Sub Main( )
         Dim currentListBox As New MyArray("Hello", "World")

         currentListBox.Add("o")
         currentListBox.Add("s")
         currentListBox.Add("h")
         currentListBox.Add("t")

         Dim subst As String = "Universe"
         currentListBox(1) = subst

         Dim s As String
         For Each s In currentListBox
             Console.WriteLine("Value: {0}", s)
         Next
     End Sub
 End Class
Value: Hello
Value: Universe
Value: o
Value: s
Value: h
Value: t
Value:
Value:








8.23.IEnumerable
8.23.1.Implements IEnumerable
8.23.2.Print IEnumerable collections