Зачем нужен индексатор в C#?

В чём заключаются функции индексатора? Зачем он нужен?

Индексаторы позволяют индексировать экземпляры класса или структуры точно так же, как и массивы. Индексированное значение можно задавать или получать без явного указания типа или экземпляра элемента. Индексаторы действуют как свойства, за исключением того, что их акцессоры принимают параметры. - с MSDN.

По сути, Indexer это тот же Property (getter\setter) ,а если еще проще это такой же самый метод как и все отсальные только вместо ( ) таких скобок где вводятся аргументы используются [ ] такие скобки.Этот метод позволяет Обращаться к массиву как YourClassName[index] таким образом происходит обращение к массиву не смотря нато что его access modifier private при помощи property под названием Indexer.

Приведу в пример код индексатора для целочисленного массива:

private int [] array=new int[5];//global variable in the class

public int this[int index]//indexer define it like a simple method of YourClassName
{
get
{
return array[index];
}
set
{
if(index<array.Length)
{
array[index]=value;
}
else throw new Exception("Your index is bigger then Length of array");
}
}