При проектировании .net Microsoft решила создать три не взаимозаменяемых типа свойств: только чтение, только запись и чтение и запись. В C #, если объявить свойство чтения-записи с тем же именем, что и одно или несколько свойств интерфейса, которые предполагается реализовать, компилятор может автоматически создать не только свойство чтения-записи, которое фактически указал программист, но и только для чтения и / или свойства только для записи, необходимые для удовлетворения интерфейсов. Например, если интерфейс IReadableFoo реализует свойство Foo только для чтения, IWritableFoo реализует свойство Foo только для записи, а IReadWriteFoo наследует IReadableFoo и IWritablefoo, а также реализует «новое» свойство чтения и записи Foo, а класс ReadWriteFoo реализует IReadWriteFoo и объявляет открытое свойство чтения-записи Foo, компилятор будет иметь ReadWriteFoo, генерирующий реализации интерфейса свойства только для чтения IReadableFoo.Foo, свойства только для записи IWritableFoo.Foo и свойства чтения-записи IReadWriteFoo.Foo.