- C# Indexers Introduction
- C# Indexers
What is an indexer? An indexer is a way to access elements in a class that represent a list of values. We have already used indexes in Arrays and Lists. Why would we need to implement indexers? Sometimes in our classes we have collection semantics. We use key-value pairs. We use a dictionary. What is a dictionary? A dictionary is a data type that resides in the System.Collections.Generic and it uses a hash table to store data. A hash table is fast. It looks up items by the key.
If you have a list of objects and you want to look them up by a key as opposed to an index, you should use a dictionary. If you have a list of objects and you would like to look them up by an index (an integer) then a List is a better choice.
How do we declare an indexer? An indexer is nothing but a property. Instead of an identifier we use the this keyword.
public class Customer { // a customer might not be the best example of a Dictionary. private readonly Dictionary<string, string> _dictionary; // instead of initializing in the constructore we could: // private Dictionary<string, string> _dictionary = new Dictionary,string,string>(); public DateTime ExpiryDate { get; set; } public Customer() { // initialize in the constructor _dictionary = new Dictionary<string, string>(); } public string this[string key] { get { return _dictionary[key]; } set { _dictionary[key] = value; } } } class Program { static void Main(string[] args) { var customer = new Customer(); customer["name"] = "Mosh"; customer["lastname"] = "Hamedani"; Console.WriteLine(customer["name"]); Console.ReadKey(); } }