Интерфейсные свойства C#

Интерфейсные свойства в C#, Интерфейс в C#, Объявление интерфейсного свойства, C# Полное руководство Герберт Шилдт, Язык программирования C#, C# полное руководство, Интерфейсы в C#

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

// Интерфейсное свойство
тип имя{
   get;
   set;
}

Очевидно, что в определении интерфейсных свойств, доступных только для чтения или только для записи, должен присутствовать единственный аксессор: get или set соответственно.    ,
Несмотря на то что объявление свойства в интерфейсе очень похоже на объявление автоматически реализуемого свойства в классе, между ними все же имеется отличие. При объявлении в интерфейсе свойство не становится автоматически реализуемым. В этом случае указывается только имя и тип свойства, а его реализация предоставляется каждому реализующему классу. Кроме того, при объявлении свойства в интерфейсе не разрешается указывать модификаторы доступа для аксессоров. Например, аксессор set не может быть указан в интерфейсе как private.
Ниже в качестве примера приведен переделанный вариант интерфейса ISeries и класса ByTwos, в котором свойство Next используется для получения и установки следующего по порядку числа, которое больше предыдущего на два.

// Использовать свойство в интерфейсе.

using System;

public interface ISeries {
   // Интерфейсное свойство.
   int Next {
   
      get; // возвратить следующее по порядку число
      set; // установить следующее число
   }
}

// Реализовать интерфейс ISeries.
class ByTwos : ISeries {
   int val;

   public ByTwos () {
      val = 0;
}

   // Получить или установить значение.
   public int Next {
      get {
         val += 2;
     return val;
      }
      set {
         val = value;
      }
   }
}


// Продемонстрировать применение интерфейсного свойства.
class SeriesDemo3 {
   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);
   }
}

При выполнении этого кода получается следующий результат:
   Следующее число равно 2
   Следующее число равно 4
   Следующее число равно 6
   Следующее число равно 8
   Следующее число равно 10

   Начать с числа 21
   Следующее число равно 23
   Следующее число равно 25
   Следующее число равно 27
   Следующее число равно 29
   Следующее число равно 31