Data Structure VB.Net

Imports System
Imports System.Collections
Imports System.Collections.Specialized
Public Class MyCollection
   Inherits NameObjectCollectionBase
   Private _de As New DictionaryEntry()
   Default Public ReadOnly Property Item(index As Integer) As DictionaryEntry
      Get
         _de.Key = Me.BaseGetKey(index)
         _de.Value = Me.BaseGet(index)
         Return _de
      End Get
   End Property
   Public Sub New(d As IDictionary, bReadOnly As [Boolean])
      Dim de As DictionaryEntry
      For Each de In  d
         Me.BaseAdd(CType(de.Key, [String]), de.Value)
      Next de
      Me.IsReadOnly = bReadOnly
   End Sub 'New
   Public Sub Add(key As [String], value As [Object])
      Me.BaseAdd(key, value)
   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 myROCol As New MyCollection(d, True)
      Try
         myROCol.Add("B", "bb")
      Catch e As NotSupportedException
         Console.WriteLine(e.ToString())
      End Try
      PrintKeysAndValues(myROCol)
   End Sub 
   Public Shared Sub PrintKeysAndValues(myCol As MyCollection)
      Dim i As Integer
      For i = 0 To myCol.Count - 1
         Console.WriteLine("[{0}] : {1}, {2}", i, myCol(i).Key, myCol(i).Value)
      Next i
   End Sub
End Class