Amir228
@Amir228

Почему нельзя писать поле в интерфейсе?

Почему? Как бы можно писать такие свойства: int number { get; set; };, но при этом поле: int number; будет идентично. Я знаю что такие свойство используют чтобы если нужно будет быстро поменять доступность какого то акссесора, но не знаю в чем отличие. Есть ли различие между такими свойствоми и полями?

А и еще, есть делегаты и события, события писать можно а делегаты нет. Это тоже самое что и с полями и свойствами? Событие ведь тоже инкапсулирует
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Потому что интерфейс, по идее, не содержит внутри себя никаких данных - только список методов.
Поэтому полей в интерфейсе нет. А свойства - это не поля, это упрощенный синитаксис для вызова методов-аксессоров: метода получения связанного с объектом значения и (если реализовано) его установки. Поэтому ничто не мешает интерфейсу их содержать.
PS Автоматически реализуемое свойство объекта - типа того, что вы написали в начале - оно только внешне похоже на описание свойства в интерфейсе. В интерфейсе пустые тела аксессоров (так же, как и других методов) означают, что наследующий этот интерфейс класс обязан их реализовать. А автоматически реализуемое свойство объекта - это синтаксический сахар, скрывающий от глаз реализацию: автоматически создаваемое компилятором поле с простейшими аксессорами - прочитать поле и записать в поле.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист

Как бы можно писать такие свойства: int number { get; set; };, но при этом поле: int number; будет идентично

Нет, не будет.
Поле - это место для хранения данных.
Свойство - это методы для доступа к данным.

В классе автосвойство компилируется ещё и в поле, но в интерфейсе - это не так.


А и еще, есть делегаты и события, события писать можно а делегаты нет. Это тоже самое что и с полями и свойствами? Событие ведь тоже инкапсулирует

Делегат - это тип.
Событие - аналог свойств.

Поле или свойство с типом делегата - это поле или свойство с типом делегата.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы