Overload the MyArray indexer : Indexer « Class « C# / CSharp Tutorial





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 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]); 
 
  }  
}
myArray[1]: 1
myArray[2]: 2
myArray[1.1]: 1
myArray[1.6]: 1










7.40.Indexer
7.40.1.Creating One-Dimensional Indexers
7.40.2.Indexing with an Integer Indexer
7.40.3.Indexing with an String Indexer
7.40.4.Indexing with Multiple Parameters
7.40.5.Define both int and string indexer for a class
7.40.6.Use indexer to add element
7.40.7.Define getter only indexer
7.40.8.Use an indexer to create a fail-soft array.
7.40.9.Overload the MyArray indexer
7.40.10.Indexers don't have to operate on actual arrays
7.40.11.Indexer based on 0 or non-zero
7.40.12.Indexer based on switch statement
7.40.13.Indexer for generic type
7.40.14.Using a string as an indexer value