Оглавление:
Определение - что означает индексатор?
Индексатор в контексте C # - это член класса, используемый для предоставления возможностей индексации в виде массива для легкого доступа к свойствам объекта. Индексатор в основном используется, когда массив инкапсулирован в тип.
Простой синтаксис индексатора помогает клиентским приложениям получать доступ к группам элементов как элемент объекта массива (тип, класс или структура). Индексатор обеспечивает косвенный метод вставки логики проверки границ. Благодаря своей интуитивной природе индексатор улучшает читаемость кода.
Индексатор часто используется для реализации стека, так что к его содержимому можно обращаться без удаления элемента. Реализация индексатора Java похожа на C #. Как правило, индексаторы могут быть использованы в коде библиотеки из-за их простоты использования и гибкости.
Техопедия объясняет Индексатор
Хотя индексаторы похожи на свойства, они используют разные параметры. Свойства идентифицируются по имени, а индексаторы - по подписи и использованию ключевого слова «это». Свойства могут быть доступны через члены, но индексаторы доступны через элементы. В отличие от свойств, компилятор C # не позволяет использовать статический индексатор.
Индексатор удобен тем, что его экземпляры класса и структуры индексируются как массивы и используют скобочную запись для доступа к элементу. Индексаторы известны как интеллектуальные массивы. Средства доступа - это компоненты индексации get и set, которые позволяют получать и устанавливать значения соответственно. На основе типа члена, необходимого для поиска, индексатор объявляется с соответствующей подписью. Ключевое слово «this» используется для определения индексаторов, а «Value» используется для назначения доступа.
Тип и параметры индексатора должны быть такими же доступными, как и сам индексатор. Количество и типы формальных аргументов известны по сигнатуре индексатора, но не по именам типов или аргументов. Тип возвращаемого значения должен быть допустимым типом C #. Индексатор должен иметь хотя бы один параметр.
Индексаторы классов могут быть перегружены и иметь разные подписи. Поскольку индексаторы не считаются переменными, их нельзя использовать в качестве параметров ref или out. В кросс-языке используется имя по умолчанию Item, если оно не указано в объявлении. Средства доступа, реализованные с помощью индексаторов, могут быть перегружены несколькими типами. Индексаторы позволяют передавать более одного формального параметра, например, при доступе к двумерному массиву. Абстрактные индексаторы реализуются путем простого объявления методов доступа get / set в базовом классе и добавления кода производного класса.
Хотя индексаторы также используются в интерфейсах, объявления классов отличаются. Средства доступа индексатора интерфейса не используют модификаторы и не имеют тела. Индексаторы также используются в интерфейсах, чтобы указывать, доступны ли они только для чтения, только для записи или для чтения и записи. Согласно рекомендациям по проектированию, правильная стратегия обработки ошибок имеет решающее значение при использовании методов доступа get и set в дополнение к предоставлению необходимой документации об исключениях ошибок для индексаторов. Рекомендуется ограничить доступ до требуемого уровня, чтобы избежать вредоносного набора значений. Это определение было написано в контексте C #