Share via

Facebook x.com LinkedIn Email

Indexers (C# Programming Guide)

  • 2013年02月15日

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.

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 Overview

  • 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.

C# Language Specification

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

See Also

Concepts

C# Programming Guide

Reference

Properties (C# Programming Guide)