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