Добавить в цитаты Настройки чтения

Страница 176 из 502

<b>    Console.WriteLine(&quot;nНачать с числа 21&quot;);</b>

<b>    ob.Next = 21;</b>

<b>    for (int i=0; i &lt;5; i++)</b>

<b>      Console.WriteLine(&quot;Следующее число равно &quot; + 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 &lt; 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 &lt; 5; i++)</b>

<b>      Console.WriteLine(&quot;Следующее число равно &quot; + ob.Next);</b>

<b>    Console.WriteLine(&quot;nНачать с числа 21&quot;);</b>

<b>    ob.Next = 21;</b>

<b>    for (int i=0; i &lt; 5; i++)</b>

<b>      Console.WriteLine(&quot;Следующее число равно &quot; + ob.Next);</b>

<b>    Console.WriteLine(&quot;nСбросить в 0&quot;);</b>