Indexers
With indexers you can access elements in a class or struct that encapsulate a list or dictionary of values. Accessed via index argument.
Example: String class has an indexer.
string s = "hello"; Console.WriteLine (s[0]); // 'h' Console.WriteLine (s[3]); // 'l'
Can be called on null-conditional
string s = null; Console.WriteLine (s?[0]); // Writes nothing; no error.
Implementing an indexer
You need to define property called this.
class Sentence { string[] words = "The quick brown fox".Split(); public string this [int wordNum] // indexer { get { return words [wordNum]; } set { words [wordNum] = value; } } } Sentence s = new Sentence(); Console.WriteLine (s[3]); // fox s[3] = "kangaroo"; Console.WriteLine (s[3]); // kangaroo