Нет - вы не можете писать именованные индексаторы в C #.Начиная с C # 4 вы можете использовать их для COM-объектов, но не можете их написать.
Как вы заметили, однако, foo.Bars[index]
будет делать то, что вы хотите в любом случае ... этот ответ был в основномради будущих читателей.
Для уточнения: предоставление свойства Bars
некоторого типа, имеющего индексатор, позволяет достичь того, чего вы хотите, но вы должны подумать, как это сделать:
- Хотите ли вы, чтобы абоненты могли заменить коллекцию другой коллекцией?(Если нет, сделайте его доступным только для чтения.)
- Хотите, чтобы вызывающие абоненты могли изменять коллекцию?Если так, то как?Просто заменить предметы или добавить / удалить их?Вам нужен контроль над этим?Ответы на эти вопросы будут определять, какой тип вы хотите представить - потенциально доступную только для чтения коллекцию или пользовательскую коллекцию с дополнительной проверкой.