Книга: C# 4.0: полное руководство

Интерфейсные индексаторы

Интерфейсные индексаторы

В интерфейсе можно также указывать индексаторы. Ниже приведена общая форма объявления интерфейсного индексатора.

// Интерфейсный индексатор тип_элемента this[int индекс]{ get; set;
}

Как и прежде, в объявлении интерфейсных индексаторов, доступных только для чтения или только для записи, должен присутствовать единственный аксессор: get или set соответственно.

Ниже в качестве примера приведен еще один вариант реализации интерфейса ISeries, в котором добавлен индексатор только для чтения, возвращающий i-й элемент числового ряда.

//Добавить индексатор в интерфейс
using System;
// Добавить индексатор в интерфейс, using System;
public interface ISeries {
  // Интерфейсное свойство,
  int Next {
    get; // возвратить следующее по порядку число
    set; // установить следующее число
  }
  // Интерфейсный индексатор,
  int this[int index] {
    get; // возвратить указанное в ряду число
  }
}
// Реализовать интерфейс ISeries,
class ByTwos : ISeries {
  int val;
  public ByTwos() {
    val = 0;
  }
  // Получить или установить значение с помощью свойства,
  public int Next {
    get {
      val += 2;
      return val;
    }
    set {
      val = value;
    }
  }
  // Получить значение по индексу,
  public int this[int index] {
    get {
      val = 0;
      for(int i=0; i < index; i++) val += 2;
      return val;
    }
  }
}
// Продемонстрировать применение интерфейсного индексатора,
class SeriesDemo4 {
  static void Main() {
    ByTwos ob = new ByTwos();
    // Получить доступ к последовательному
    //ряду чисел с помощью свойства,
    for (int i=0; i < 5; i++)
      Console.WriteLine("Следующее число равно " + ob.Next);
    Console.WriteLine("nНачать с числа 21");
    ob.Next = 21;
    for (int i=0; i < 5; i++)
      Console.WriteLine("Следующее число равно " + ob.Next);
    Console.WriteLine("nСбросить в 0");
    ob.Next = 0;
    // Получить доступ к последовательному
    //ряду чисел с помощью индексатора
    for (int i=0; i < 5; i++)
      Console.WriteLine("Следующее число равно " + ob[i]);
  }
}

Вот к какому результату приводит выполнение этого кода.

Следующее число равно 2
Следующее число равно 4
Следующее число равно 6
Следующее число равно 8
Следующее число равно 10
Начать с числа 21
Следующее число равно 23
Следующее число равно 25
Следующее число равно 27
Следующее число равно 29
Следующее число равно 31
Сбросить в 0
Следующее число равно 0
Следующее число равно 2
Следующее число равно 4
Следующее число равно 6
Следующёе число равно 8

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


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