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

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

Выполнение

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

Пример

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

учебный класс Наша семья{	общественный Наша семья(параметры нить[] pЧлены)	{	    семья = новый Список<нить>();	    семья.AddRange(pЧлены);	}		частный Список<нить> семья;		общественный нить это[int индекс]	{		// Аксессор get		получать		{		    возвращаться семья[индекс];		}		// Аксессор set с 		набор		{		    семья[индекс] = ценить;		}	}	общественный int это[нить вал]	{		// Получение индекса по значению (найден первый элемент)		получать		{		    возвращаться семья.FindIndex(м => м == вал);		}	}	общественный int Длина => семья.Считать;	}

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

пустота Главный(){    вар ланьСемья = новый Наша семья("Джон", "Джейн");    за (int я = 0; я < ланьСемья.Длина; я++)    {        вар член = ланьСемья[я];        вар индекс = ланьСемья[член]; // то же самое, что и i в этом случае, но демонстрирует перегрузку индексатора, позволяющую искать doeFamily по значению.        Консоль.WriteLine($"{member} - это номер члена {индекс} {nameof (doeFamily)}");    }}

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

  Джон - член номер 0 в семье лань. Джейн - член номер 1 в семье лань.

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

Рекомендации

  1. ^ jagadish980 (29 января 2008 г.). «C # - Что такое индексатор в C #». http://forums.sureshkumar.net/forum.php: Вестник: ФОРУМЫ СУРЕШКУМАР.НЕТ. Архивировано из оригинал 22 сентября 2009 г.. Получено 2011-08-01.
  2. ^ "Вопросы для собеседования по C #". http://www.dotnetfunda.com/: .net Funda. Получено 2011-08-01.