Store Structure into a Collection
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