有时候我会在类的顶部声明成员变量,然后再声明一个属性来访问或设置该成员变量,但是如果变量只会从类内部访问和设置,那么我会想这个属性是否必要。那么,使用属性来访问和设置成员变量与直接对成员变量进行操作相比,有什么优势呢?下面是一个例子:
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属性来设置和获取变量speed,并且我决定将int speed更改为int spd,那么我必须在使用到speed的所有地方都改为spd。但是,如果我使用类似Speed这样的属性来设置和获取speed,那么我只需要在属性的get和set中将speed改为spd,这样在我的MutilplySpeed方法中,像上面的this.Speed = this.Speed + this.Speed + this.Speed这样的代码就不会出问题。