VB.Net Tutorial/Collections/IEnumerable

Материал из VB Эксперт
Перейти к: навигация, поиск

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:
Value: