Индексатор (программирование)
![]() | Эта статья может сбивать с толку или быть непонятной читателям . В частности, это C# или общая концепция объектно-ориентированного программирования? Конечно, интересно использование ключевого слова «это», а не то, что здесь подчеркивается? Почему вся эта статья взята только из одного сообщения на форуме C# (другое сообщение на форуме является мертвой ссылкой). Возможно, пример использования примера класса продемонстрирует назначение конструкции. Википедия не является руководством, путеводителем или учебником WP:NOTHOWTO .. ( Апрель 2015 г. ) |
В объектно-ориентированном программировании индексатор . позволяет индексировать экземпляры определенного класса или структуры так же, как массивы [1] Это форма перегрузки операторов .
Реализация [ править ]
Индексаторы реализуются через методы доступа get и set для operator[]
. Они похожи на свойства , но отличаются тем, что не являются статическими и тем, что методы доступа индексаторов принимают параметры. Методы доступа get и set вызываются как методы с использованием списка параметров объявления индексатора, но метод доступа set по-прежнему имеет неявный value
параметр.
Пример [ править ]
Вот пример C# использования индексатора в классе: [2]
класс Family
{
частный список < строка > _familyMembers = новый список < строка > ();
public Family ( params string [] members )
{
_familyMembers . AddRange ( члены );
}
public string this [ int index ]
{
// Метод доступа
get get => _familyMembers [ index ];
// Метод доступа set с
set => _familyMembers [ index ] = value ;
}
public int this [ string val ]
{
// Получение индекса по значению (первый найденный элемент)
get => _familyMembers . FindIndex ( m => m == val );
}
Public int Длина => _familyMembers . Считать ;
}
Пример использования:
void Main ()
{
var doeFamily = новая семья ( «Джон» , «Джейн» );
для ( int я = 0 ; я < doeFamily . Длина ; я ++ )
{
вар член = doeFamily [ я ];
вар индекс = doeFamily [ член ]; // то же, что и i в этом случае, но демонстрирует перегрузку индексатора, позволяющую осуществлять поиск doeFamily по значению.
Консоль . WriteLine ( $"{member} — номер члена {индекс} {nameof(doeFamily)}" );
}
}
В этом примере индексатор используется для получения значения в n-й позиции, а затем для получения позиции в списке, на которую ссылается его значение. Вывод кода:
Джон является членом doeFamily под номером 0. Джейн — член номер 1 семьи doeFamily.
См. также [ править ]
Ссылки [ править ]
- ^ jagadish980 (29 января 2008 г.). «C# — Что такое индексатор в C#» . ФОРУМЫ SURESHKUMAR.NET . Архивировано из оригинала 22 сентября 2009 года . Проверено 1 августа 2011 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ «Вопросы для собеседования по C#» . .net Фунда . Проверено 1 августа 2011 г.