VB.Net Tutorial/Collections/CollectionBase

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

Extends CollectionBase to create custom Collection

<source lang="vbnet">Imports System.Collections Imports System.Collections.Generic Imports System.Collections.Specialized public class Test

  public Shared Sub Main
       Dim emp_list As New EmployeeCollection
       emp_list.Add(New Employee("A", "A"))
       emp_list.Add(New Employee("B", "B"))
       emp_list.Add(New Employee("C", "C"))
       emp_list.Add(New Employee("D", "D"))
       emp_list.Add(New Employee("E", "E"))
       For Each emp As Employee In emp_list
           Console.WriteLine(emp.ToString)
       Next emp
  End Sub
  

End class Public Class Employee

   Private m_FirstName As String
   Private m_LastName As String
   Public Sub New(ByVal first_name As String, ByVal last_name As String)
       m_FirstName = first_name
       m_LastName = last_name
   End Sub
   Public Overrides Function ToString() As String
       Return m_FirstName & " " & m_LastName
   End Function

End Class Public Class EmployeeCollection

   Inherits CollectionBase
   Public Sub Add(ByVal value As Employee)
       List.Add(value)
   End Sub
   Public Function Contains(ByVal value As Employee) As Boolean
       Return List.Contains(value)
   End Function
   Public Function IndexOf(ByVal value As Employee) As Integer
       Return List.IndexOf(value)
   End Function
   Public Sub Insert(ByVal index As Integer, ByVal value As Employee)
       List.Insert(index, value)
   End Sub
   Default Public ReadOnly Property Item(ByVal index As Integer) As Employee
       Get
           Return DirectCast(List.Item(index), Employee)
       End Get
   End Property
   Public Sub Remove(ByVal value As Employee)
       List.Remove(value)
   End Sub

End Class</source>

A A
B B
C C
D D
E E

Inherit CollectionBase to create your own Collection structure

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

  Inherits CollectionBase
 Public Function Add(ByVal value As String) As Integer
    MyBase.List.Add(value)
    
    Sort()
 End Function
 Default Public Property Item(ByVal index As Integer) As String
    Get
       Return DirectCast(MyBase.List.Item(index), String)
    End Get
    Set(ByVal value As String)
       MyBase.List.Item(index) = value
    End Set
 End Property
 Public Sub Sort
    Dim sArr(Me.Count - 1) As String
    Dim IColl As ICollection = Me
    IColl.CopyTo(sArr,0)
    Array.Sort(sArr)
    Me.Clear
    For Each s As String In sArr
       Me.List.Add(s)
    Next
 End Sub

End Class Public Module TestSortedStrings

  Public Sub Main()
     Dim sstrings As New SortedStrings()
     sstrings.Add("D")
     sstrings.Add("A")
     sstrings.Add("C")
     sstrings.Add("B")
     sstrings.Add("E")
     
     For Each sstring As String In sstrings
        Console.WriteLine(sstring)
     Next
  End Sub

End Module</source>

A
B
C
D
E