Mega Code Archive

 
Categories / C# Tutorial / Class
 

Use an indexer to create a fail-soft array

using System;    class MyArray {     int[] a;     public int Length;      public bool errflag;       public MyArray(int size) {      a = new int[size];      Length = size;     }      // This is the indexer for MyArray.    public int this[int index] {      get {        if(indexCheck(index)) {          errflag = false;          return a[index];        } else {          errflag = true;          return 0;        }      }        set {        if(indexCheck(index)) {          a[index] = value;          errflag = false;        }        else errflag = true;      }    }      private bool indexCheck(int index) {     if(index >= 0 & index < Length)        return true;     return false;    }  }      class MainClass {     public static void Main() {       MyArray myArray = new MyArray(5);      int x;        Console.WriteLine("Fail quietly.");      for(int i=0; i < 10; i++)        myArray[i] = i*10;        for(int i=0; i < 10; i++) {        x = myArray[i];        if(x != -1) Console.Write(x + " ");      }      Console.WriteLine();        Console.WriteLine("\nFail with error reports.");      for(int i=0; i < 10; i++) {        myArray[i] = i*10;        if(myArray.errflag)          Console.WriteLine("myArray[" + i + "] out-of-bounds");      }        for(int i=0; i < 10; i++) {        x = myArray[i];        if(!myArray.errflag)           Console.Write(x + " ");        else           Console.WriteLine("myArray[" + i + "] out-of-bounds");      }    }  } Fail quietly. 0 10 20 30 40 0 0 0 0 0 Fail with error reports. myArray[5] out-of-bounds myArray[6] out-of-bounds myArray[7] out-of-bounds myArray[8] out-of-bounds myArray[9] out-of-bounds 0 10 20 30 40 myArray[5] out-of-bounds myArray[6] out-of-bounds myArray[7] out-of-bounds myArray[8] out-of-bounds myArray[9] out-of-bounds