Существуют ситуации, когда я объявляю переменные-члены в верхней части моего класса, а затем объявляю свойство для доступа или установки этой переменной-члена, но я спрашиваю себя, нужно ли свойство, если он будет доступен только для переменной, и установленный внутри класса и не где-то еще, так что в чем преимущество использования свойства для доступа и установки переменной-члена вместо того, чтобы просто делать это непосредственно с самой переменной-членом. Вот пример:
public class Car
{
int speed; //Is this sufficient enough if Car will only set and get it.
public Car(int initialSpeed)
{
speed = initialSpeed;
}
//Is this actually necessary, is it only for setting and getting the member
//variable or does it add some benefit to it, such as caching and if so,
//how does caching work with properties.
public int Speed
{
get{return speed;}
set{speed = value;}
}
//Which is better?
public void MultiplySpeed(int multiply)
{
speed = speed * multiply; //Line 1
this.Speed = this.Speed * multiply; //Line 2
//Change speed value many times
speed = speed + speed + speed;
speed = speed * speed;
speed = speed / 3;
speed = speed - 4;
}
}
В приведенном выше примере, если у меня нет свойства Speed для установки и получения переменной скорости, и я решаю изменить скорость int на int spd, мне придется менять скорость на spd везде, где она используется, если я использую свойство, такое как Speed для установки и получения скорости, мне просто нужно будет изменить скорость на spd в get и set свойства, так что в моем методе MutilplySpeed, как и выше. Скорость = this.Speed + this.Speed + this.Speed не сломается.