Use indexers to access elements in a class (or a struct) that encapsulates a collection. You can define multiple indexers, each with parameters of different types.
Indexers can be:
Keep in mind that:
Example: Implement an indexer:
class Tagline { string[] words = "One ring to rule them all".Split(); // Indexer definition public string this [int n] { get { if (n < 0 || n > words.length-1) throw new IndexOutOfRangeException("Index out of range."); else return words[n]; } set { words[n] = value; } } } ... // Use the indexer. Tagline s = new Tagline(); Console.WriteLine(s[3]); // displays the word "rule"
An indexer can take more than one parameter (a multidimensional indexer):
public string this [int x, int y] { get { ... } set { ... } } public string this [int arg1, string arg2] { get { ... } set { ... } }
An indexer can use noninteger parameters to define maps and dictionaries:
public City this [string code] { get { ... } set { ... } }