Tôi nghĩ phần khó hiểu là nếu bạn viết int Property { get; set; }
bên trong một lớp, thì đó là một thuộc tính tự động với trường sao lưu ngầm.
Nhưng nếu bạn viết chính xác điều tương tự trong một giao diện, thì đó không phải là thuộc tính tự động , nó chỉ tuyên bố rằng thuộc tính đó là một phần của giao diện và bất kỳ loại nào thực hiện giao diện đó đều phải chứa thuộc tính đó (là thuộc tính tự động hay không ), nhưng nó không tạo ra trường sao lưu.
Một cách để thấy sự khác biệt là viết int Property { get; }
: điều này hợp lệ trong một giao diện và khai báo một thuộc tính chỉ có một getter, nhưng không có setter. Nhưng nó sẽ không biên dịch trong một lớp (trừ khi bạn đang sử dụng C # 6.0), vì thuộc tính tự động phải có bộ cài đặt.