Страница 176 из 502
<b> Console.WriteLine("nНачать с числа 21");</b>
<b> ob.Next = 21;</b>
<b> for (int i=0; i <5; i++)</b>
<b> Console.WriteLine("Следующее число равно " + ob.Next);</b>
<b> }</b>
<b>}</b>
При выполнении этого кода получается следующий результат.
<b>Следующее число равно 2 </b>
<b>Следующее число равно 4 </b>
<b>Следующее число равно 6 </b>
<b>Следующее число равно 8 </b>
<b>Следующее число равно 10</b>
<b>Начать с числа 21 </b>
<b>Следующее число равно 23 </b>
<b>Следующее число равно 25</b>
<b>Следующее число равно 27 </b>
<b>С</b><b>ледующее число равно 29 </b>
<b>Следующее число равно 31</b>
Интерфейсные индексаторы
В интерфейсе можно также указывать индексаторы. Ниже приведена общая форма объявления интерфейсного индексатора.
// Интерфейсный индексатор тип_элемента this[int индекс]{ get; set;
}
Как и прежде, в объявлении интерфейсных индексаторов, доступных только для чтения или только для записи, должен присутствовать единственный аксессор: get или set соответственно.
Ниже в качестве примера приведен еще один вариант реализации интерфейса ISeries, в котором добавлен индексатор только для чтения, возвращающий i-й элемент числового ряда.
<b>//Добавить индексатор в интерфейс</b>
<b>using System;</b>
<b>// Добавить индексатор в интерфейс, using System;</b>
<b>public interface ISeries {</b>
<b> // Интерфейсное свойство, </b>
<b> int Next {</b>
<b> get; // возвратить следующее по порядку число </b>
<b> set; // установить следующее число</b>
<b> }</b>
<b> // Интерфейсный индексатор,</b>
<b> int this[int index] {</b>
<b> get; // возвратить указанное в ряду число</b>
<b> }</b>
<b>}</b>
<b>// Реализовать интерфейс ISeries, </b>
<b>class ByTwos : ISeries {</b>
<b> int val;</b>
<b> public ByTwos() {</b>
<b> val = 0;</b>
<b> }</b>
<b> // Получить или установить значение с помощью свойства, </b>
<b> public int Next { </b>
<b> get {</b>
<b> val += 2;</b>
<b> return val;</b>
<b> }</b>
<b> set {</b>
<b> val = value;</b>
<b> }</b>
<b> }</b>
<b><i> //</i> Получить значение по индексу,</b>
<b> public int this[int index] {</b>
<b> get {</b>
<b> val = 0;</b>
<b> for(int i=0; i < index; i++) val += 2;</b>
<b> return val;</b>
<b> }</b>
<b> }</b>
<b>}</b>
<b>// Продемонстрировать применение интерфейсного индексатора,</b>
<b>class SeriesDemo4 {</b>
<b> static void Main() {</b>
<b> ByTwos ob = new ByTwos();</b>
<b> // Получить доступ к последовательному </b>
<b> //ряду чисел с помощью свойства,</b>
<b> for (int i=0; i < 5; i++)</b>
<b> Console.WriteLine("Следующее число равно " + ob.Next);</b>
<b> Console.WriteLine("nНачать с числа 21");</b>
<b> ob.Next = 21;</b>
<b> for (int i=0; i < 5; i++)</b>
<b> Console.WriteLine("Следующее число равно " + ob.Next);</b>
<b> Console.WriteLine("nСбросить в 0");</b>