Using a custom strongly typed PersonList (VB) : ArrayList « Collections « ASP.NET Tutorial






<%@ 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








7.2.ArrayList
7.2.1.Add objects to ArrayList (C#)
7.2.2.Add objects to ArrayList (VB)
7.2.3.Foreach loop (C#)
7.2.4.Foreach loop (VB)
7.2.5.Using an ArrayList instead of an array (C#)
7.2.6.Using an ArrayList instead of an array (VB)
7.2.7.Using a custom strongly typed PersonList (C#)
7.2.8.Using a custom strongly typed PersonList (VB)
7.2.9.ArrayList with custom objects
7.2.10.Bind ArrayList to DropDownList