VB.Net/Data Structure/CollectionBase

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

A strongly typed collection of your own Objects

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

   Shared Sub Main(ByVal args As String())
       Dim student_list As New StudentCollection
       student_list.Add(New Student("A", "E"))
       student_list.Add(New Student("B", "D"))
       student_list.Add(New Student("C", "C"))
       student_list.Add(New Student("D", "B"))
       student_list.Add(New Student("E", "A"))
       For Each student As Student In student_list
           Console.WriteLine(student.ToString)
       Next student
   End Sub

End Class

Public Class Student

   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 " A strongly typed collection of Students. Public Class StudentCollection

   Inherits CollectionBase
   " Add an Student.
   Public Sub Add(ByVal value As Student)
       List.Add(value)
   End Sub
   " Return True if the collection contains this employee.
   Public Function Contains(ByVal value As Student) As Boolean
       Return List.Contains(value)
   End Function
   " Return this Student"s index.
   Public Function IndexOf(ByVal value As Student) As Integer
       Return List.IndexOf(value)
   End Function
   " Insert a new Student.
   Public Sub Insert(ByVal index As Integer, ByVal value As Student)
       List.Insert(index, value)
   End Sub
   " Return the Student at this position.
   Default Public ReadOnly Property Item(ByVal index As Integer) As Student
       Get
           Return DirectCast(List.Item(index), Student)
       End Get
   End Property
   " Remove an Student.
   Public Sub Remove(ByVal value As Student)
       List.Remove(value)
   End Sub

End Class

      </source>


Inherit from CollectionBase

<source lang="vbnet"> Imports System Public Class MainClass

 Shared Sub Main()
       Dim e1 As New Employee("E", 50000)
       Dim e2 As New Employee("S", 60000)
       Dim myEmployees As New Employees()
       myEmployees.Add(e1)
       myEmployees.Add(e2)
       Dim aEmployee As Employee
       For Each aEmployee In myEmployees
           Console.WriteLine(aEmployee.Name)
       Next
 End Sub

End Class

Public Class Employees

   Inherits System.Collections.CollectionBase
   Public Sub Add(ByVal aEmployee As Employee)
       List.Add(aEmployee)
   End Sub
   Public Sub Remove(ByVal index As Integer)
       If index > Count - 1 Or index < 0 Then
           Console.WriteLine("Can"t add this item")
       Else
           List.RemoveAt(index)
       End If
   End Sub
   Default Public ReadOnly Property Item(ByVal index As Integer) As Employee
       Get
           Return CType(List.Item(index), Employee)
       End Get
   End Property

End Class

Public Class Employee

   Private m_Name As String
   Private m_Salary As Decimal
   Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
       m_Name = theName
       m_Salary = curSalary
   End Sub
   Public ReadOnly Property Name() As String
       Get
           Return m_Name
       End Get
   End Property
   Public ReadOnly Property Salary() As Decimal
       Get
           Return MyClass.m_Salary
       End Get
   End Property

End Class

      </source>