Imports System
Imports System.Collections
Class EmployeeList
Private mEmployees As Hashtable
Private mLevels As Hashtable
Public Sub New()
mEmployees = New Hashtable()
mLevels = New Hashtable()
End Sub
Public Default Property Employee(ByVal ID As Integer) As Employee
Get
Dim theObject As Object
theObject = mEmployees(ID)
Return CType(theObject, Employee)
End Get
Set(ByVal Value As Employee)
mEmployees(ID) = Value
End Set
End Property
Public Property Level(ByVal country As String) As String
Get
Dim theObject As Object
theObject = mLevels(country)
Return CType(theObject, String)
End Get
Set(ByVal Value As String)
mLevels(country) = Value
End Set
End Property
End Class
Class Employee
Private mName As String
Private mWage As Double
Private mID As Integer
Public Sub New(ByVal name As String, ByVal wage As Double,ByVal id As Integer)
mName = name
mWage = wage
mID = id
End Sub
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal Value As String)
mName = Value
End Set
End Property
Public ReadOnly Property Wage() As Double
Get
Return mWage
End Get
End Property
Public ReadOnly Property ID() As Integer
Get
Return mID
End Get
End Property
Public Sub PayRise(ByVal amount As Double)
mWage += amount
End Sub
Public Overrides Function ToString() As String
Return "[" & mID & "] " & mName & " " & mWage
End Function
End Class
Module DefaultProperty
Sub Main()
Dim employer As New EmployeeList()
employer(1) = New Employee("A", 25, 1)
employer(2) = New Employee("J", 35, 2)
employer(3) = New Employee("T", 17, 3)
employer(4) = New Employee("E", 16, 4)
employer.Level("AA") = "A"
employer.Level("BB") = "B"
employer.Level("CC") = "C"
employer.Level("DD") = "D"
employer.Level("EE") = "E"
employer.Level("FF") = "F"
Dim country As String
country = "AA"
Dim city As String
city = employer.Level(country)
If city Is Nothing Then
Console.WriteLine("No office in {0}", country)
Else
Console.WriteLine("Level in {0}: {1}", country, city)
End If
End Sub
End Module
|