C# Indexer overloading
Overload the indexer
The following code creates a class with indexers overloaded for int and double.
using System; /*w ww. jav a 2 s . c o m*/
class MyArray {
int[] a;
public int Length;
public bool errflag;
public MyArray(int size) {
a = new int[size];
Length = size;
}
// This is the int 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;
}
}
public int this[double idx] {
get {
int index = (int) idx;
if(indexCheck(index)) {
errflag = false;
return a[index];
} else {
errflag = true;
return 0;
}
}
set {
int index = (int) idx;
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);
for(int i=0; i < myArray.Length; i++)
myArray[i] = i;
// now index with ints and doubles
Console.WriteLine("myArray[1]: " + myArray[1]);
Console.WriteLine("myArray[2]: " + myArray[2]);
Console.WriteLine("myArray[1.1]: " + myArray[1.1]);
Console.WriteLine("myArray[1.6]: " + myArray[1.6]);
}
}
The code above generates the following result.
Next chapter...
What you will learn in the next chapter: