Bạn chỉ cần xem tên rất ... "Thuộc tính". Nó có nghĩa là gì? Từ điển định nghĩa nó theo nhiều cách, nhưng trong trường hợp này "một thuộc tính thiết yếu hoặc khác biệt hoặc chất lượng của một vật" phù hợp nhất.
Suy nghĩ về mục đích của hành động. Bạn có, trên thực tế, thay đổi hoặc lấy "một thuộc tính thiết yếu hoặc đặc biệt"? Trong ví dụ của bạn, bạn đang sử dụng một hàm để đặt thuộc tính của hộp văn bản. Điều đó có vẻ ngớ ngẩn, phải không?
Thuộc tính thực sự là các hàm. Tất cả đều biên dịch để nhận đượcXXX() và đặtXXX(). Nó chỉ giấu chúng trong đường cú pháp, nhưng đó là đường cung cấp một ý nghĩa ngữ nghĩa cho quá trình.
Suy nghĩ về các thuộc tính như thuộc tính. Một chiếc xe có nhiều thuộc tính. Màu sắc, MPG, Mẫu, v.v. Không phải tất cả các thuộc tính đều có thể đặt được, một số thuộc tính có thể tính toán được.
Trong khi đó, Phương thức là một hành động. GetColor phải là tài sản. GetFile() phải là một hàm. Một nguyên tắc khác là, nếu nó không thay đổi trạng thái của đối tượng, thì nó phải là một hàm. Ví dụ, CalculatePiToNthDigit (n) phải là một hàm, vì nó không thực sự thay đổi trạng thái của đối tượng Math mà nó gắn vào.
Điều này có thể hơi rambling một chút, nhưng nó thực sự sôi xuống để quyết định những gì các đối tượng của bạn, và những gì họ đại diện. Nếu bạn không thể tìm ra nếu nó phải là một tài sản hoặc chức năng, có lẽ nó không quan trọng đó.
Nguồn
2009-03-02 08:45:55
-1 câu hỏi này đã được hỏi và trả lời trước: http://stackoverflow.com/questions/164527/exposing-member-objects-as-properties-or-methods-in-net – Element
Phương thức/trường/thuộc tính ưu và khuyết điểm có thể tạo ra các cuộc tranh luận dài; một số sử dụng chung cho các thuộc tính: khi bạn muốn các trường riêng tư/được bảo vệ nhưng đồng thời bạn muốn hiển thị chúng. Sử dụng khác là không chỉ có các câu lệnh mà còn cả các biểu thức (các hành động nếu bạn thích) ngay cả khi kiểm tra 'if()' (theo MSDN). Nhưng điều này là khó khăn vì người dùng không phải lúc nào cũng biết chi phí xử lý đằng sau việc truy cập biến (thuộc tính) (tức là mã không có sẵn) và vì lý do nghiêm ngặt, người dùng phải đánh giá tài sản. Oh, và một "tiền thưởng" bạn không thể sử dụng con trỏ với các thuộc tính. – mireazma