Mega Code Archive

 
Categories / C# Tutorial / Class
 

Indexing with an String Indexer

using System; using System.Collections; class Pair {     public Pair(string name, object data)     {         this.name = name;         this.data = data;     }     public string Name     {         get         {             return(name);         }         set         {             name = value;         }     }     public object Data     {         get         {             return(data);         }         set         {             data = value;         }     }     string    name;     object data; } class PairList {     public PairList()     {         row = new ArrayList();     }          public void Load()      {         /* load code here */          row.Add(new Pair("Q", 5551212));         row.Add(new Pair("A", "text"));         row.Add(new Pair("B", 2355.23m));     }          public Pair this[int column]     {         get         {             return( (Pair) row[column - 1]);         }         set         {             row[column - 1] = value;         }     }     int FindPair(string name)     {         for (int index = 0; index < row.Count; index++)         {             Pair Pair = (Pair) row[index];             if (Pair.Name == name)             return(index);         }         return(-1);     }     public Pair this[string name]     {         get         {             return( (Pair) this[FindPair(name)]);         }         set         {             this[FindPair(name)] = value;         }     }     ArrayList    row;     } class Test {     public static void Main()     {         PairList row = new PairList();         row.Load();         Pair val = row["A"];         Console.WriteLine("A: {0}", val.Data);         Console.WriteLine("B: {0}", row["B"].Data);         row["Q"].Data = "new value";    // set the name         Console.WriteLine("Q: {0}", row["Q"].Data);     } } A: 5551212 B: text Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negativ e and less than the size of the collection. Parameter name: index at System.Collections.ArrayList.get_Item(Int32 index) at PairList.get_Item(Int32 column) at Test.Main()