Чтобы пояснить, что сказал Джон, свойства позволяют вам добавлять ограничения и логику к тому, что вы делаете.
Например, если у меня есть класс прямоугольника
class Rectangle
{
private float mWidth;
private float mHeight;
private float mArea;
public float width
{
get
{
return mWidth;
}
set
{
mWidth = value;
mArea = mHeight*mWidth;
}
}
public float height
{
get
{
return mHeight;
}
set
{
mHeight = value;
mArea = mHeight*mWidth;
}
}
public float area()
{
return mArea;
}
}
Такrect.width + = 20;обновит и ширину, и площадь;
Очевидно, что это глупый пример, но вы могли бы сделать это без свойств для ширины и высоты, используя вместо этого публичные переменные, а вместо этого просто использовали
public float area
{
get
{
return width*height;
}
}
Это даст вам правильную область, если вы скажете float x = rect.area, но не позволит вам сказать что-то вроде rect.area = 40.
Есть еще много глубинных вещей, которые вы можете сделатьсо свойствами, такими как привязка данных, например, но если вы только начинаете программировать, вы вернетесь к этому позже.
Пока вы можете рассматривать свойство как удобный метод, который не требует () и может принимать или давать переменную.
Если он ничего не делает, кроме получения и установки,его, вероятно, лучше использовать в качестве переменной.
Если он выполняет много внутренней работы и затрагивает значительную часть вашего класса, это, вероятно, должен быть метод.
Если это быстрыйфункция для проверки ввода (вращение с плавающей точкой {set {mRotation = value% 360;}}) или вывод с несколькими проверками (bool isInMotion {get {return (! isTurning &&! isMoving)}} свойства работают хорошо.
Конечно, никакие правила не являются окончательными.
Надеюсь, это даст вам общее представление о свойствах и переменных, хотя, как всегда, есть чему поучиться.
Удачи!