VB.Net Tutorial/Collections/Collection
Содержание
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