Свойства - это просто хороший способ написать пару методов get и set . В Java вы могли бы сделать это:
private int age;
public int getAge() { return age; }
public void setAge(int value) { age = value; }
Вам нужно личное поле, чтобы где-то хранить возраст - getAge и setAge - это просто методы.
То же самое относится к C # для версий до 3.0:
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
Это метод get и set, просто скомпонованный так, что вы можете написать x.Age = 21
вместо x.setAge(21)
.
С автоматическими свойствами компилятор C # генерирует для вас приватное поле (но оно все еще там!):
public int Age
{
get;
set;
}
Преимущество автоматических свойств заключается в том, что вам больше не нужно вручную создавать вспомогательное поле.
Преимущество ручной версии заключается в том, что вы можете добавить дополнительную логику в методы get и set, например, проверку параметров:
private int age;
public int Age
{
get { return age; }
set { if (value < 0) throw new ArgumentException(); age = value; }
}