VB.Net by API/System.Collections/IEnumerable — различия между версиями

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

Версия 16:40, 26 мая 2010

IEnumerable.GetEnumerator

  
Imports System
Imports System.Collections
Public Class MainClass
    
    Shared Sub Main()
             Dim intQueue As New Queue(  )
             Dim i As Integer
             For i = 0 To 4
                 intQueue.Enqueue((i * 5))
             Next i
             Console.WriteLine("intQueue values:")
             DisplayValues(intQueue)
             Console.WriteLine("(Dequeue) {0}", intQueue.Dequeue(  ))
             Console.WriteLine("intQueue values:")
             DisplayValues(intQueue)
             Console.WriteLine("(Dequeue) {0}", intQueue.Dequeue(  ))
             Console.WriteLine("intQueue values:")
             DisplayValues(intQueue)
             Console.WriteLine("(Peek)   {0}", intQueue.Peek(  ))
             Console.WriteLine("intQueue values:")
             DisplayValues(intQueue)
   End Sub
   Public Shared Sub DisplayValues(ByVal myCollection As IEnumerable)
       Dim myEnumerator As IEnumerator = myCollection.GetEnumerator(  )
       While myEnumerator.MoveNext(  )
           Console.WriteLine("{0} ", myEnumerator.Current)
       End While
       Console.WriteLine(  )
   End Sub
End Class


Implements IEnumerable

  
Imports System
Imports System.Collections
 
Public Class MainClass
    Shared Sub Main(ByVal args As String())
                 
             Dim intCollection As New Collection( )
             Dim empCollection As New Collection( )
             Dim empCollection2 As New Collection( )
             " populate the Collections
             Dim i As Integer
             For i = 0 To 4
                 empCollection.Add(New EnumerableClass("A", "B"))
                 intCollection.Add((i * 5))
             Next i
             " add key/value pairs
             empCollection2.Add(New EnumerableClass("A", "B"), "A B")
             empCollection2.Add(New EnumerableClass("C", "D"), "C D")
             empCollection2.Add(New EnumerableClass("E", "F"), "E F")
             " print each member of the array
             For Each i In intCollection
                 Console.Write("{0} ", i.ToString( ))
             Next i
             Console.WriteLine( )
             Console.WriteLine("Employee collection...")
             Dim e As EnumerableClass
             For Each e In empCollection
                 Console.Write("{0} ", e.ToString( ))
             Next e
             Console.WriteLine( )
             Console.WriteLine("Employee collection 2...")
             For Each e In empCollection2
                 Console.Write("{0} ", e.ToString( ))
             Next e
             Console.WriteLine( )
             " retrieve an Employee by key
             Dim emp As EnumerableClass
             emp = empCollection2.Item("A B")
             Console.WriteLine( _
               " empID {0}", emp.ToString( ))
             " note that indexing is 1-based (rather than zero based)
             emp = empCollection2.Item(1)
             Console.WriteLine( _
               "Index(1) retrieved empID {0}", emp.ToString( ))
    End Sub
End Class
     Public Class EnumerableClass : Implements IEnumerable
         Private strings( ) As String
         Private ctr As Integer = 0
         Private Class MyEnumerator
             Implements IEnumerator
             Private currentListBox As EnumerableClass
             Private index As Integer
             Public Sub New(ByVal currentListBox As EnumerableClass)
                 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 MyEnumerator(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