#366 – Defining an Indexer with More than One Parameter
July 13, 2011 Leave a comment
An indexer will typically have a single parameter, often based on an integer type.
public LogMessage this[int i]
{
get { return messages[i]; }
set { messages[i] = value; }
}
You can also define an indexer that takes more than one parameter. In the example below, we have an internal data structure that stores a list of messages for each day of the week. We can retrieve a specific message by passing in a parameter representing the day, as well as a 0-based index into the list of messages for that day.
// Get 1st Saturday message
LogMessage msg = log[Days.Sat, 0];
Here’s what the definition of the indexer looks like.
private Dictionary<Days, List<LogMessage>> dailyMessages = new Dictionary<Days, List<LogMessage>>();
public LogMessage this[Days day, int i]
{
get { return dailyMessages[day][i]; }
}