Mega Code Archive

 
Categories / C# / Class Interface
 

Overload the FailSoftArray indexer

/* C#: The Complete Reference  by Herbert Schildt  Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Overload the FailSoftArray indexer.     using System;      class FailSoftArray {      int[] a;    // reference to underlying array         public int Length; // Length is public        public bool errflag; // indicates outcome of last operation          // Construct array given its size.     public FailSoftArray(int size) {       a = new int[size];       Length = size;      }        // This is the int indexer for FailSoftArray.     public int this[int index] {       // This is the get accessor.       get {         if(ok(index)) {           errflag = false;           return a[index];         } else {           errflag = true;           return 0;         }       }          // This is the set accessor       set {         if(ok(index)) {           a[index] = value;           errflag = false;         }         else errflag = true;       }     }        /* This is another indexer for FailSoftArray.       This index takes a double argument.  It then       rounds that argument to the nearest integer       index. */     public int this[double idx] {       // This is the get accessor.       get {         int index;          // round to nearest int        if( (idx - (int) idx) < 0.5) index = (int) idx;        else index = (int) idx + 1;          if(ok(index)) {           errflag = false;           return a[index];         } else {           errflag = true;           return 0;         }       }          // This is the set accessor       set {         int index;          // round to nearest int        if( (idx - (int) idx) < 0.5) index = (int) idx;        else index = (int) idx + 1;          if(ok(index)) {           a[index] = value;           errflag = false;         }         else errflag = true;       }     }        // Return true if index is within bounds.     private bool ok(int index) {      if(index >= 0 & index < Length) return true;      return false;     }   }        // Demonstrate the fail-soft array.   public class FSDemo1 {      public static void Main() {        FailSoftArray fs = new FailSoftArray(5);          // put some values in fs      for(int i=0; i < fs.Length; i++)        fs[i] = i;         // now index with ints and doubles      Console.WriteLine("fs[1]: " + fs[1]);      Console.WriteLine("fs[2]: " + fs[2]);        Console.WriteLine("fs[1.1]: " + fs[1.1]);      Console.WriteLine("fs[1.6]: " + fs[1.6]);      }   }