Книга: C# для профессионалов. Том II

Индексаторы

Индексаторы

C# cтрого не разрешает перезагружать []. Однако он позволяет определить так называемые индексаторы (indexer) класса, что обеспечивает такой же результат.

Синтаксис определении индексатора очень похож на синтаксис свойства. Предположим, что необходимо использовать экземпляры MyClass как массив, где каждый элемент индексируется с помощью int и возвращает long. Тогда можно сделать следующую запись:

class MyClass {
 public long this[int x] {
  get {
   // код для получения элемента
  }
  set {
   // код для задания элемента, например X = value;
  }
 }
 // и т.д.

Код внутри блока get выполняется всякий раз, когда Mine[x] стоит с правой стороны выражения (при условии, что выражение Mine является экземпляром MyClass и x будет int), в то время как блок set выполняется только тогда, когда Mine[x] указывается с левой стороны выражения. Блок set ничего не может вернуть и использует ключевое слово value для указания величины, которая появится с правой стороны выражения. Блок get должен вернуть тот же тип данных, который имеет индексатор.

Можно перезагружать индексаторы, чтобы использовать любой тип данных в квадратных скобках или любое число аргументов, тем самым создавая эффект многомерного массива.

Оглавление книги


Генерация: 1.496. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз