Когда мы определяем свойство как
public string Name {get; set;}
точечная сеть может сделать наш код свойств. но когда мы используем
public string Name {get;}
public string Name {set;}
мы сталкиваемся с
'Hajloo.SomeThing.PropertyName.set' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.
На самом деле, почему компилятор не может определить свойство и сделать код автоматически?В чем проблема?
Поскольку автоматически реализуемые свойства создают собственное хранилище резервных копий для значений свойств. У вас нет доступа к внутреннему магазину.
Реализация свойства с помощью
для обычного свойства
private int _data;
public int Data{ get { return _data } };
Здесь родительский класс может выполнять следующие действия где-то еще в классе (чего не может быть с автоматическими реквизитами)
_data = 100;
Примечание: вы можете определить автоматический -prop вот так (как я использую чаще всего).
public int Data { get; private set;}
Это означает, что свойство не может быть установлено внешними клиентами класса. Однако сам содержащий класс может устанавливать свойство несколько раз через this.Data = x;
в определении класса.
Если нет установщика, свойство никогда не может иметь ничего, кроме значения по умолчанию, поэтому не служит никакой цели.