Data Structure VB.Net

Imports System
Imports System.Collections
Public Class ROCollection
    Inherits ReadOnlyCollectionBase
    Public Sub New(sourceList As IList)
        InnerList.AddRange(sourceList)
    End Sub 'New
    Default Public ReadOnly Property Item(index As Integer) As [Object]
        Get
            Return InnerList(index)
        End Get
    End Property
    Public Function IndexOf(value As [Object]) As Integer
        Return InnerList.IndexOf(value)
    End Function 
    Public Function Contains(value As [Object]) As Boolean
        Return InnerList.Contains(value)
    End Function 
End Class 
Public Class SamplesCollectionBase
    Public Shared Sub Main()
        Dim myAL As New ArrayList()
        myAL.Add("A")
        myAL.Add("B")
        myAL.Add("C")
        Dim myCol As New ROCollection(myAL)
        PrintIndexAndValues(myCol)
    End Sub 
    Public Shared Sub PrintIndexAndValues(myCol As ROCollection)
        Dim i As Integer
        For i = 0 To myCol.Count - 1
            Console.WriteLine("   [{0}]:   {1}", i, myCol(i))
        Next i
        Console.WriteLine()
    End Sub 
End Class