Use an indexer to create a fail-soft array. : Indexer : Class C# Examples


C# Examples » Class » Indexer »

 

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");  
        }  
    }  
}
    
   
  
   



Output

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


HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Class
» Indexer