Data Structure VB.Net

Imports System
Imports System.Collections
Imports System.Collections.Specialized
Public Class MyCollection
   Inherits NameObjectCollectionBase
   Default Public Property Item(index As Integer) As [Object]
      Get
         Return Me.BaseGet(index)
      End Get
      Set
         Me.BaseSet(index, value)
      End Set
   End Property
   Default Public Property Item(key As [String]) As [Object]
      Get
         Return Me.BaseGet(key)
      End Get
      Set
         Me.BaseSet(key, value)
      End Set
   End Property
   Public ReadOnly Property AllKeys() As [String]()
      Get
         Return Me.BaseGetAllKeys()
      End Get
   End Property
   Public Sub New(d As IDictionary)
      Dim de As DictionaryEntry
      For Each de In  d
         Me.BaseAdd(CType(de.Key, [String]), de.Value)
      Next de
   End Sub 
End Class 
Public Class SamplesNameObjectCollectionBase
   Public Shared Sub Main()
      Dim d = New ListDictionary()
      d.Add("A", "a")
      d.Add("B", "b")
      d.Add("P", "p")
      Dim myCol As New MyCollection(d)
      PrintKeysAndValues2(myCol)
      Console.WriteLine()
      myCol(1) = "AAAAA"
      PrintKeysAndValues2(myCol)
      Console.WriteLine()
      myCol("A") = "QQQQQ"
      PrintKeysAndValues2(myCol)
   End Sub 
   Public Shared Sub PrintKeysAndValues2(myCol As MyCollection)
      Dim s As [String]
      For Each s In  myCol.AllKeys
         Console.WriteLine("{0}, {1}", s, myCol(s))
      Next s
   End Sub 
End Class