VB.Net Tutorial/Collections/Collection

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

Add key value pair to Collection

<source lang="vbnet">Option Strict On Imports System.Collections Public Class Collect

  Public Shared Sub Main()
     Dim sta As New Collection
        sta.Add("New York", "NY")
        sta.Add("Michigan", "MI")
        sta.Add("New Jersey", "NJ")
        sta.Add("Massachusetts", "MA")
     For Each stcode As String In sta
        Console.WriteLine(stcode)
     Next
  End Sub

End Class</source>

New York
Michigan
New Jersey
Massachusetts

Deleting the members of a collection

<source lang="vbnet">Option Strict On Public Module CollectionTest

  Public Sub Main()
     Dim weights As New Collection
     weights.Add("ounces", "oz")
     weights.Add("pounds", "lbs")
     weights.Add("kilograms", "kg")
     weights.Add("milligrams", "mg")
     For ordinal As Integer = weights.Count To 1 Step -1
        weights.Remove(ordinal)
     Next
     Console.WriteLine("The collection now has {0} items.", weights.Count)
  End Sub

End Module</source>

The collection now has 0 items.

Get Enumerator from Collection

<source lang="vbnet">Imports System.Collections Public Class Enumerate

  Public Shared Sub Main()
     Dim weights As New Collection
     Dim iterator As IEnumerator
     weights.Add("ounces", "oz")
     weights.Add("pounds", "lbs")
     weights.Add("kilograms", "kg")
     weights.Add("milligrams", "mg")
     iterator = weights.GetEnumerator
     Do While iterator.MoveNext
        Console.WriteLine(iterator.Current)
     Loop
  End Sub

End Class</source>

ounces
pounds
kilograms
milligrams

Inserting items into a collection by index

<source lang="vbnet">Public Class Tester

   Public Shared Sub Main
       Dim wordCollection As New Collection
       wordCollection.Add("This")
       wordCollection.Add("is")
       wordCollection.Add("a")
       wordCollection.Add("collection")
       wordCollection.Add("of")
       wordCollection.Add("words")
       " ----- Insert a word after item 3.
       wordCollection.Add("slightly", , , 3)
       " ----- Insert a word before item 5.
       wordCollection.Add("longer", , 5)
       For Each word As String In wordCollection
           Console.WriteLine(word)
       Next word
   End Sub

End Class</source>

This
is
a
slightly
longer
collection
of
words

Remove from Collection

<source lang="vbnet">public class Test

  public Shared Sub Main
       Dim employees As New Collection
       employees.Add(New Employee("A"))
       employees.Add(New Manager("B"))
       employees.Add(New Manager("C"))
       employees.Add(New Employee("D"))
       For Each emp As Employee In employees
           Console.WriteLine(emp.Name)
       Next emp
       
       For i As Integer = employees.Count To 1 Step -1
           Dim emp As Employee = CType(employees(i), Employee)
           If emp.IsManager Then employees.Remove(i)
       Next i
       For Each emp As Employee In employees
           Console.WriteLine(emp.Name)
       Next emp
  End Sub

End class Public Class Employee

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub
   Public Overridable Function IsManager() As Boolean
       Return False
   End Function

End Class Public Class Customer

   Public Name As String
   Public Sub New(ByVal new_name As String)
       Name = new_name
   End Sub

End Class Public Class Manager

   Inherits Employee
   Public Sub New(ByVal new_name As String)
       MyBase.new(new_name)
   End Sub
   Public Overrides Function IsManager() As Boolean
       Return True
   End Function

End Class</source>

A
B
C
D
A
D

Scanning items in a collection

<source lang="vbnet">Public Class Tester

   Public Shared Sub Main
       Dim numberCollection As New Collection
       numberCollection.Add(14, "C")
       numberCollection.Add(25, "D")
       numberCollection.Add(36, "E")
       numberCollection.Add(47, "A")
       numberCollection.Add(58, "B")
       " ----- Scan the collection with a loop counter.
       "       Collections are base-1, not base-0.
       For counter As Integer = 1 To numberCollection.Count
           Console.WriteLine(numberCollection(counter))
       Next counter
       " ----- Scan the collection by item.
       For Each number As Integer In numberCollection
           Console.WriteLine(number)
       Next number
       " ----- Retrieve items by key.
       Console.WriteLine(numberCollection("A"))
       Console.WriteLine(numberCollection("B"))
       Console.WriteLine(numberCollection("C"))
       Console.WriteLine(numberCollection("D"))
       Console.WriteLine(numberCollection("E"))
   End Sub

End Class</source>

14
25
36
47
58
14
25
36
47
58
47
58
14
25
36

Store objects in Collection and retrieve by key and index

<source lang="vbnet">Imports System

Public Class Employee
    Private myEmpID As Integer
    Public Sub New(ByVal empID As Integer)
        Me.myEmpID = empID
    End Sub "New
    Public Overrides Function ToString( ) As String
        Return myEmpID.ToString( )
    End Function "ToString
    Public Property EmpID( ) As Integer
        Get
            Return myEmpID
        End Get
        Set(ByVal Value As Integer)
            myEmpID = Value
        End Set
    End Property
End Class "Employee
Class Tester
    Shared Sub Main( )
        Dim intCollection As New Collection( )
        Dim empCollection As New Collection( )
        Dim empCollection2 As New Collection( )
        Dim i As Integer
        For i = 0 To 4
            empCollection.Add(New Employee(i + 100))
            intCollection.Add((i * 5))
        Next i
        empCollection2.Add(New Employee(1), "G")
        empCollection2.Add(New Employee(2), "J")
        empCollection2.Add(New Employee(3), "T")
        For Each i In intCollection
            Console.Write("{0} ", i.ToString( ))
        Next i
        Console.WriteLine( )
        Console.WriteLine("Employee collection...")
        Dim e As Employee
        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( )
        Dim emp As Employee
        emp = empCollection2.Item("J")
        Console.WriteLine(emp.ToString( ))
        emp = empCollection2.Item(1)
        Console.WriteLine("Index(1) retrieved empID {0}", emp.ToString( ))
    End Sub 
End Class</source>
0 5 10 15 20
Employee collection...
100 101 102 103 104
Employee collection 2...
1 2 3
2
Index(1) retrieved empID 1