Có những tình huống mà tôi khai báo biến thành viên ở đầu lớp và sau đó khai báo thuộc tính để truy cập hoặc thiết lập biến thành viên đó, nhưng tôi tự hỏi liệu thuộc tính có cần thiết không nếu nó chỉ được truy cập và thiết lập từ bên trong lớp và không có nơi nào khác, vậy lợi thế của việc sử dụng một thuộc tính để truy cập và thiết lập biến thành viên thay vì chỉ làm trực tiếp đến biến thành viên là gì. Dưới đây là ví dụ:Sự khác biệt giữa biến thành viên và thuộc tính thành viên?
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;
}
}
Ở trên, nếu tôi không có thuộc tính Tốc độ đặt và nhận tốc độ biến, và tôi quyết định thay đổi tốc độ thành int, tôi sẽ phải thay đổi tốc độ Tuy nhiên, nếu tôi sử dụng một thuộc tính như Speed để thiết lập và nhận tốc độ, tôi sẽ chỉ phải thay đổi tốc độ thành spd trong việc nhận và thiết lập thuộc tính, vì vậy trong phương thức MutilplySpeed của tôi, các công cụ như trên this.Speed = this.Speed + this.Speed + this.Speed sẽ không bị ngắt.
có thể trùng lặp của [Sự khác nhau giữa một trường và thuộc tính trong C#?] (Http: // stackoverflow là gì.com/questions/295104/what-is-the-different-giữa-a-field-và-a-property-in-c) – nawfal