Индексаторы (Руководство по программированию в 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 индексатора.

  • Индексаторы не должны использовать в качестве индекса целочисленное значение; конкретный механизм поиска определяет разработчик.

  • Индексаторы можно перегружать.

  • Индексаторы могут иметь более одного формального параметра, например при доступе к двухмерному массиву.

Связанные разделы

Спецификация языка C#

Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

Ссылки

Свойства (Руководство по программированию в C#)

Основные понятия

Руководство по программированию на C#