VB.Net Tutorial/Collections/IEnumerable

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

Implements IEnumerable

<source lang="vbnet">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</source>
Value: Hello
Value: Universe
Value: o
Value: s
Value: h
Value: t
Value:
Value: