Mega Code Archive

 
Categories / C# / Collections Data Structure
 

NameObjectCollectionBase is the base class for a collection of associated String keys and Object values

using System; using System.Collections; using System.Collections.Specialized; public class MyCollection : NameObjectCollectionBase {    public MyCollection()  {    }    public MyCollection( IDictionary d, Boolean bReadOnly )  {       foreach ( DictionaryEntry de in d )  {          this.BaseAdd( (String) de.Key, de.Value );       }       this.IsReadOnly = bReadOnly;    }    public DictionaryEntry this[ int index ]  {       get  {           return ( new DictionaryEntry(                this.BaseGetKey(index), this.BaseGet(index) ) );       }    }    public Object this[ String key ]  {       get  {          return( this.BaseGet( key ) );       }       set  {          this.BaseSet( key, value );       }    }    public String[] AllKeys  {       get  {          return( this.BaseGetAllKeys() );       }    }    public Array AllValues  {       get  {          return( this.BaseGetAllValues() );       }    }    public String[] AllStringValues  {       get  {          return( (String[]) this.BaseGetAllValues( typeof( string ) ));       }    }    public Boolean HasKeys  {       get  {          return( this.BaseHasKeys() );       }    }    public void Add( String key, Object value )  {       this.BaseAdd( key, value );    }    public void Remove( String key )  {       this.BaseRemove( key );    }    public void Remove( int index )  {       this.BaseRemoveAt( index );    }    public void Clear()  {       this.BaseClear();    } } public class SamplesNameObjectCollectionBase  {    public static void Main()  {       IDictionary d = new ListDictionary();       d.Add( "A", "a" );       d.Add( "B", "b" );       d.Add( "C", "c" );       MyCollection myROCol = new MyCollection( d, true );       myROCol.Add( "D", "d" );       PrintKeysAndValues( myROCol );       MyCollection myRWCol = new MyCollection();       myRWCol.Add( "Q", "q" );       PrintKeysAndValues( myRWCol );       myRWCol["o"] = "g";       PrintKeysAndValues( myRWCol );       myRWCol.Remove( "b" );       PrintKeysAndValues( myRWCol );       myRWCol.Clear();       PrintKeysAndValues( myRWCol );    }    public static void PrintKeysAndValues( MyCollection myCol )  {       for ( int i = 0; i < myCol.Count; i++ )  {          Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value );       }    }    public static void PrintKeysAndValues2( MyCollection myCol )  {       foreach ( String s in myCol.AllKeys )  {          Console.WriteLine( "{0}, {1}", s, myCol[s] );       }    } }