thể trùng lặp:
What is the difference between a field and a property in C#accessors công cộng vs tài sản công cộng của một lớp
Ai đó có thể giải thích diffrence nếu có giữa hai thuộc tính này?
public string City { get; set; }
public string City;
thể trùng lặp:
What is the difference between a field and a property in C#accessors công cộng vs tài sản công cộng của một lớp
Ai đó có thể giải thích diffrence nếu có giữa hai thuộc tính này?
public string City { get; set; }
public string City;
Đầu tiên là thuộc tính thực tế. Cái thứ hai chỉ là một trường.
Nói chung, các trường cần được giữ private
và là những gì lưu trữ dữ liệu thực tế. Các thuộc tính không thực sự lưu trữ bất kỳ dữ liệu nào, nhưng chúng trỏ đến các trường. Trong trường hợp thuộc tính tự động ở trên, nó sẽ tự động tạo một trường ẩn như _city đằng sau hậu trường để giữ dữ liệu.
Hy vọng điều này sẽ hữu ích!
Đầu tiên là thuộc tính CLR, trong khi thứ hai chỉ là trường công khai (không phải thuộc tính).
Trong WPF và Silverlight, ràng buộc không hoạt động với các trường công cộng, nó chỉ hoạt động với các thuộc tính công khai. Đó là một sự khác biệt lớn trong quan điểm của tôi:
//<!--Assume Field is a public field, and Property is a public property-->
<TextBlock Text="{Binding Field}"/>
<TextBlock Text="{Binding Property}"/>
một đầu tiên sẽ không làm việc nhưng điều thứ hai sẽ làm việc.
như mellamokb đã nói. loại thứ nhất là tài sản, trình biên dịch sẽ tự động tạo ra chức năng truy cập và lĩnh vực tư nhân như:
private String _city;
public String City(){ return _city ;}
.....
Thuộc tính sử dụng, bạn có thể kiểm soát việc tiếp cận của _city, ví dụ như"
public String City(){
doXxxFunction();
return _city ;
}
vậy, bạn nên luôn sử dụng thuộc tính và đảm bảo tất cả các trường là riêng tư.