#592 – Optional Parameters in Indexers
May 28, 2012 Leave a comment
In addition to defining optional parameters within methods, you can also include an optional parameter in an indexer.
For example, assume that we have a Dog class that keeps track of the sounds that a dog makes when he barks and that we’ve defined an indexer for the class that retrieves a “bark sound” from that list.
public string this[int i] { get { return BarkRecord[i]; } }
Using the indexer:
kirby.Bark("Woof"); kirby.Bark("Bow-wow"); kirby.Bark("Urgh"); Console.WriteLine(kirby[2]);
We can now add an optional parameter to the indexer, to indicate that we’d like the date/time of the bark returned as well.
public string this[int i, bool includeTime = false] { get { string barkInfo = BarkRecord[i]; if (includeTime) barkInfo = barkInfo + string.Format(" at {0}", BarkTime[i]); return barkInfo; } }
Using the indexer:
Console.WriteLine("Bark at [2]={0}", kirby[2]); Console.WriteLine("Bark at [1]={0}", kirby[1, true]);