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.
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]); } } // Output: // Hello, World.
Note
|
|---|
|
For more examples, see Related Sections. |
-
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 C# Language Specification. The language specification is the definitive source for C# syntax and usage.
Note