Collections Data Structure C#

using System;
using System.Collections;
using System.Collections.Specialized;
public class MyCollection : NameObjectCollectionBase  {
   public Object this[ int index ]  {
      get  {
         return( this.BaseGet( index ) );
      }
      set  {
         this.BaseSet( index, value );
      }
   }
   public Object this[ String key ]  {
      get  {
         return( this.BaseGet( key ) );
      }
      set  {
         this.BaseSet( key, value );
      }
   }
   public String[] AllKeys  {
      get  {
         return( this.BaseGetAllKeys() );
      }
   }
   public MyCollection( IDictionary d )  {
      foreach ( DictionaryEntry de in d )  {
         this.BaseAdd( (String) de.Key, de.Value );
      }
   }
}
public class SamplesNameObjectCollectionBase  {
   public static void Main()  {
      IDictionary d = new ListDictionary();
      d.Add( "A", "a" );
      d.Add( "B", "b" );
      d.Add( "C", "C" );
      MyCollection myCol = new MyCollection( d );
      PrintKeysAndValues2( myCol );
      Console.WriteLine();
      myCol[1] = "sunflower";
      PrintKeysAndValues2( myCol );
      Console.WriteLine();
      myCol["red"] = "tulip";
      PrintKeysAndValues2( myCol );
   }
   public static void PrintKeysAndValues2( MyCollection myCol )  {
      foreach ( String s in myCol.AllKeys )  {
         Console.WriteLine( "{0}, {1}", s, myCol[s] );
      }
   }
}