Mega Code Archive

 
Categories / VB.Net / Data Structure
 

Implements IEnumerable

Imports System Imports System.Collections Public Class MainClass          Shared Sub Main()        Dim currentListBox As New _            ListBoxTest("Hello", "World")        'add a few strings        currentListBox.Add("o")        currentListBox.Add("s")        currentListBox.Add("n")        currentListBox.Add("t")        'test the access        Dim subst As String = "Universe"        currentListBox(1) = subst        'access all the strings        Dim s As String        For Each s In currentListBox            Console.WriteLine("Value: {0}", s)        Next    End Sub End Class      Public Class ListBoxTest : Implements IEnumerable          Private strings(  ) As String          Private ctr As Integer = 0          Private Class ListBoxEnumerator              Implements IEnumerator              Private currentListBox As ListBoxTest              Private index As Integer              Public Sub New(ByVal currentListBox As ListBoxTest)                  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           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