Свойства иногда называются "умными полями", а индексаторы — "умными массивами", а значит, стоит использовать для них один синтаксис. Действительно, определение индексатора во многом напоминает определение свойств, кроме двух крупных отличий. Во-первых, индексатор принимает аргумент
индекс.
Во-вторых, поскольку сам класс применяется как массив, в качестве имени индексатора используется ключевое слово
this.
Вскоре вы увидите более полный пример, а сейчас взгляните на такой пример индексатора:
class MyClass
{
public object this [int idx]
{
get
{
// Возврат нужных данных.
} set
{
// Установка нужных данных.
} }
}
Это лишь часть примера, иллюстрирующего синтаксис индексаторов, так как внутренняя реализация способа определения данных, их получения и установки к индексаторам не относится. Имейте в виду, что независимо от внутреннего способа хранения ваших данных (т. е. в виде массива, набора и т. д.) индексаторы — всего лишь средства, позволяющие программисту создавать экземпляр класса для написания, например, такого кода:
MyClass els = new MyClassO;
cls[0] = someObject;
Console.WriteLine("{0}", cls[0]);
Что именно вы делаете в пределах индексатора — ваше личное дело, пока клиент класса получает при обращении к объекту как к массиву ожидаемые результаты.