Imports System
Imports System.Data
Imports System.Collections
Imports System.Windows.Forms
Public Class MainClass
Shared Sub Main()
Dim customers As CustomerCollection = New CustomerCollection()
customers.Clear()
Dim newCustomer As Customer
newCustomer.FirstName = "firstName"
newCustomer.LastName = "lastName"
newCustomer.Email = "email"
' add it to the list...
customers.Add(newCustomer)
End Sub
End Class
Public Structure Customer
Public FirstName As String
Public LastName As String
Public Email As String
Public ReadOnly Property Name() As String
Get
Return FirstName & " " & LastName
End Get
End Property
Public Overrides Function ToString() As String
Return Name & " (" & Email & ")"
End Function
Public Function IsEmpty() As Boolean
If FirstName = "" Then
Return True
Else
Return False
End If
End Function
End Structure
Public Class CustomerCollection
Inherits System.Collections.CollectionBase
Private _emailHashtable As New Hashtable()
Public Sub Add(ByVal newCustomer As Customer)
Me.List.Add(newCustomer)
Dim useEmail As String
useEmail = newCustomer.Email.ToLower
EmailHashtable.Add(useEmail, newCustomer)
End Sub
Public Sub Remove(ByVal removeCustomer As Customer)
Me.List.Remove(removeCustomer)
Dim useEmail As String
useEmail = removeCustomer.Email.ToLower()
EmailHashtable.Remove(useEmail)
End Sub
Default Public Property Item(ByVal index As Integer) As Customer
Get
Return Me.List.Item(index)
End Get
Set(ByVal Value As Customer)
Me.List.Item(index) = Value
End Set
End Property
Public ReadOnly Property EmailHashtable() As Hashtable
Get
Return _emailHashtable
End Get
End Property
Default Public ReadOnly Property Item(ByVal email As String) _
As Customer
Get
email = email.ToLower()
Return EmailHashtable.Item(email)
End Get
End Property
Public Shadows Sub Clear()
MyBase.Clear()
EmailHashtable.Clear()
End Sub
Public Shadows Sub RemoveAt(ByVal index As Integer)
Remove(Item(index))
End Sub
End Class