An indexer is a special type of property that allows a class to appear like an array, i.e. you can index it (hence the name) with square bracket indexing. You use indexers all the time – looking up in a List<T> by index, or a Dictionary by key (or DataRows/Tables/etc).
It's not that common to need an indexer on a custom class, because the collections provided by the framework are generally good enough that when you need something with array like behaviour you can use one (and if you want to forward a list to the class's own indexer you should use the default property, though I'm not sure if that can be done in C#).
The syntax for an indexer is simple:
public int this[int index] {
get {
return 42;
}
set {
}
}