stringtranslate.com

Индексатор (программирование)

В объектно-ориентированном программировании индексатор позволяет индексировать экземпляры определенного класса или структуры так же, как массивы. [ 1] Это форма перегрузки операторов .

Выполнение

Индексаторы реализуются через методы доступа get и set для . Они похожи на свойства , но отличаются тем, что не являются статическими , и тем, что методы доступа индексаторов принимают параметры. Методы доступа get и set вызываются как методы с использованием списка параметров объявления индексатора, но метод доступа set по-прежнему имеет неявный параметр.operator[]value

Пример

Вот пример использования индексатора в классе на языке C#: [2]

класс Семья { частный Список < строка > _familyMembers = новый Список < строка > ();       public Family ( строка параметров [ ] члены ) { _familyMembers.AddRange ( члены ) ; }    public string this [ int index ] { // Метод доступа get get => _familyMembers [ index ];     // Метод доступа к множеству с set => _familyMembers [ index ] = value ; }    public int this [ string val ] { // Получение индекса по значению (первый найденный элемент) get => _familyMembers . FindIndex ( m => m == val ); }         public int Длина => _familyMembers . Количество ; }    

Пример использования:

void Main () { var doeFamily = new Family ( "John" , "Jane" ); for ( int i = 0 ; i < doeFamily . Length ; i ++ ) { var member = doeFamily [ i ]; var index = doeFamily [ member ]; // то же, что и i в этом случае, но демонстрирует перегрузку индексатора, позволяющую искать doeFamily по значению. Console . WriteLine ( $"{member} — это номер члена {index} {nameof(doeFamily)}" ); } }                            

В этом примере индексатор используется для получения значения в n-й позиции, а затем для получения позиции в списке, на которую ссылается его значение. Вывод кода:

Джон — член семьи doeFamily под номером 0.Джейн — член номер 1 в doeFamily

Смотрите также

Ссылки

  1. ^ jagadish980 (29.01.2008). "C# - Что такое индексатор в C#". ФОРУМЫ SURESHKUMAR.NET . Архивировано из оригинала 22 сентября 2009 г. Получено 01.08.2011 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  2. ^ "Вопросы собеседования по C#". .net Funda . Получено 01.08.2011 .