Indexer for generic type : Indexer « Class « C# / CSharp Tutorial






using System.Collections;

public abstract class Shape
{
   public abstract void Draw();
}

public class Rectangle : Shape
{
   public override void Draw()
   {
      System.Console.WriteLine( "Rectangle.Draw" );
   }
}

public class Circle : Shape
{
   public override void Draw()
   {
      System.Console.WriteLine( "Circle.Draw" );
   }
}

public class ShapeList
{
   private ArrayList shapes;

   public ShapeList()
   {
      shapes = new ArrayList();
   }

   public int Count
   {
      get
      {
         return shapes.Count;
      }
   }

   public Shape this[ int index ]
   {
      get
      {
         return (Shape) shapes[index];
      }
   }

   public void Add( Shape shape )
   {
      shapes.Add( shape );
   }
}

public class MainClass
{
   static void Main()
   {
      ShapeList drawing = new ShapeList();

      drawing.Add( new Rectangle() );
      drawing.Add( new Circle() );
      
      for( int i = 0; i < drawing.Count; ++i ) {
         Shape shape = drawing[i];
         shape.Draw();
      }
   }
}
Rectangle.Draw
Circle.Draw








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