Я думаю, що заплутана частина полягає в тому, що якщо ви пишете int Property { get; set; }
всередині класу, то це автоматеріал із неявним полем резервного копіювання.
Але якщо ви пишете абсолютно те саме, що в інтерфейсі, то це не автоматична властивість , вона просто оголошує, що властивість є частиною інтерфейсу і що будь-який тип, який реалізує інтерфейс, повинен містити цю властивість (як авто-властивість чи ні ), але це не створює резервне поле.
Один із способів побачити різницю - записати int Property { get; }
: це дійсно в інтерфейсі і оголошує властивість, у якій є лише геттер, але не сетер. Але він не буде компілюватися в класі (якщо ви не використовуєте C # 6.0), оскільки для власності авто має бути встановлений.