Use indexer to add element : Indexer « Class « C# / CSharp Tutorial






using System;
using System.Collections;

public class MainClass
{
  public static void Main()
  {
    EmployeeList empList = new EmployeeList();
  
    empList[0] = new Employee("F");
    empList[1] = new Employee("C");
    empList[2] = new Employee("Z");

    for(int i = 0; i < empList.GetNumberOfEmployeeList(); i++)
    {
      Console.WriteLine("Employee number {0}:", i);
      Console.WriteLine("Name: {0}", empList[i].Name);
    }

    try
    {
      Console.WriteLine("Using IEnumerable");
      foreach (Employee c in empList)
      {
        Console.WriteLine("Name: {0}", c.Name);
      }
    }
    catch{}      
  }
}
public class EmployeeList : IEnumerable
{
  private ArrayList carArray;

  public EmployeeList()
  {
    carArray = new ArrayList();
  }

  // The indexer.
  public Employee this[int pos]
  {
    get
    {
      if(pos < 0)
        throw new IndexOutOfRangeException("Hey! Index out of range");
      else
        return (Employee)carArray[pos];
    }
    set
    {
      carArray.Insert(pos, value);
    }
  }

  public int GetNumberOfEmployeeList()
  {
    return carArray.Count;
  }

  public IEnumerator GetEnumerator()
  {
    return carArray.GetEnumerator();
  }
}
public class Employee
{
  public Employee(string name)
  {
    this.Name = name;
  }
  public string Name;
}
Employee number 0:
Name: F
Employee number 1:
Name: C
Employee number 2:
Name: Z
Using IEnumerable
Name: F
Name: C
Name: Z








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