Индексаторы (Руководство по программированию в C#)
Индексаторы позволяют индексировать экземпляры класса или структуры так же, как массивы. Индексаторы напоминаютсвойства, но их методы доступа принимают параметры.
В следующем примере определяется универсальный класс и в качестве средств присвоения и извлечения значений создаются простые методы доступа get и set. Класс Program создает экземпляр этого класса для хранения строк.
class SampleCollection<T> { // Declare an array to store the data elements. private T[] arr = new T[100]; // Define the indexer, which will allow client code // to use [] notation on the class instance itself. // (See line 2 of code in Main below.) public T this[int i] { get { // This indexer is very simple, and just returns or sets // the corresponding element from the internal array. return arr[i]; } set { arr[i] = value; } } } // This class shows how client code uses the indexer. class Program { static void Main(string[] args) { // Declare an instance of the SampleCollection type. SampleCollection<string> stringCollection = new SampleCollection<string>(); // Use [] notation on the type. stringCollection[0] = "Hello, World"; System.Console.WriteLine(stringCollection[0]); } } // Output: // Hello, World.
![]() |
---|
Дополнительные примеры см. в разделе Связанные разделы. |
Общие сведения об индексаторах
-
Индексаторы позволяют индексировать объекты аналогично массивам.
-
Метод доступа get возвращает значение. Метод доступа set присваивает значение.
-
Ключевое слово this используется для определения индексаторов.
-
Ключевое слово value используется для определения значения, присваиваемого методом set индексатора.
-
Индексаторы не обязаны использовать в качестве индекса целочисленное значение; конкретный механизм поиска определяет разработчик.
-
Индексаторы можно перегружать.
-
Индексаторы могут иметь более одного формального параметра, например при доступе к двухмерному массиву.