VB.Net Tutorial/Collections/CollectionBase — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 15:53, 26 мая 2010
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