Mega Code Archive

 
Categories / VB.Net Tutorial / Collections
 

Implements IEnumerable

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: