VB.Net/Data Structure/CollectionBase

Материал из VB Эксперт
Версия от 12:45, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

A strongly typed collection of your own Objects

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


Inherit from CollectionBase

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