<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
File: Default.aspx.vb
Imports System
Imports System.Collections
Imports Microsoft.VisualBasic
Imports System.Collections
Public Class PersonList
Implements System.Collections.IEnumerable
Private innerList As ArrayList = New ArrayList()
Public Sub Add(ByVal aPerson As Person)
innerList.Add(aPerson)
End Sub
Public Sub Remove(ByVal aPerson As Person)
innerList.Remove(aPerson)
End Sub
Public ReadOnly Property Count() As Integer
Get
Return innerList.Count
End Get
End Property
'Get/set element at given index
Default Public Property Item(ByVal index As Integer) As Person
Get
Return CType(innerList(index), Person)
End Get
Set(ByVal Value As Person)
innerList(index) = Value
End Set
End Property
Public Function GetEnumerator() As IEnumerator _
Implements IEnumerable.GetEnumerator
Return innerList.GetEnumerator()
End Function
End Class
Public Class Person
Implements IComparable
Dim FirstName As String
Dim LastName As String
Public Sub New(ByVal First As String, ByVal Last As String)
FirstName = First
LastName = Last
End Sub
Public ReadOnly Property FullName() As String
Get
Return FirstName & " " & LastName
End Get
End Property
Public Function CompareTo(ByVal obj As Object) _
As Integer Implements IComparable.CompareTo
If Not TypeOf (obj) Is Person Then
Throw New ArgumentException("Object is not a Person!")
End If
Dim p2 As Person = CType(obj, Person)
Dim lastNameResult As Integer = Me.LastName.CompareTo(p2.LastName)
If lastNameResult = 0 Then
Dim firstNameResult As Integer = Me.FirstName.CompareTo(p2.FirstName)
Return firstNameResult
Else
Return lastNameResult
End If
End Function
End Class
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
Dim scott As New Person("A", "B")
Dim bill As New Person("C", "D")
Dim srini As New Person("E", "F")
Dim people As New PersonList()
people.Add(scott)
people.Add(bill)
people.Add(srini)
For Each p As Person In people
Response.Write(p.FullName & "<BR/>")
Next
For i As Integer = 0 To people.Count - 1
Response.Write(people(i).FullName & "<BR/>")
Next
End Sub
End Class