Indexers
C# Programming Guide
Indexers (C# Programming Guide)

Indexers allow instances of a class or struct to be indexed just like arrays. Indexers resemble properties except that their accessors take parameters.

In the following example, a generic class is defined and provided with simple get and set accessor methods as a means of assigning and retrieving values. The Program class creates an instance of this class for storing strings.

C#
class SampleCollection<T>
{
    // Declare an array to store the data elements.
    private T[] arr = new T[100];

    // Define the indexer, which will allow client code
    // to use [] notation on the class instance itself.
    // (See line 2 of code in Main below.)        
    public T this[int i]
    {
        get
        {
            // This indexer is very simple, and just returns or sets
            // the corresponding element from the internal array.
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }
}

// This class shows how client code uses the indexer.
class Program
{
    static void Main(string[] args)
    {
        // Declare an instance of the SampleCollection type.
        SampleCollection<string> stringCollection = new SampleCollection<string>();

        // Use [] notation on the type.
        stringCollection[0] = "Hello, World";
        System.Console.WriteLine(stringCollection[0]);
    }
}
  • Indexers enable objects to be indexed in a similar manner to arrays.

  • A get accessor returns a value. A set accessor assigns a value.

  • The this keyword is used to define the indexers.

  • The value keyword is used to define the value being assigned by the set indexer.

  • Indexers do not have to be indexed by an integer value; it is up to you how to define the specific look-up mechanism.

  • Indexers can be overloaded.

  • Indexers can have more than one formal parameter, for example, when accessing a two-dimensional array.

For more information, see the following sections in the C# Language Specification:

  • 1.6.7.3 Indexers

  • 10.2.9.3 Member names reserved for indexers

  • 10.9 Indexers

  • 13.2.4 Interface indexers

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Indexers can have more than one argument      Stilgar ... Limited Atonement   |   Edit   |   Show History

Also note that indexers can have more than one argument. A very simple example follows:

declaration:

    
class Mlass
{
private int[,] mint = new int[100,100];
public int this[int i, int j]
{
get
{
return mint[i, j];
}
set
{
mint[i, j] = value;
}
}
}

usage:


Mlass m = new Mlass();
m[2, 2] = 3;

Console.WriteLine(m[2, 2]);


Flag as ContentBug
Processing
Page view tracker