VB.Net/Data Structure/CollectionBase
Версия от 16:40, 26 мая 2010; (обсуждение)
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