Các phạm vi vòng loạiPublic
và Friend
determine liệu khách hàng trong các dự án khác nhau có thể xem mục không.
Public
mục này sẽ có thể truy cập vào mã khách hàng trong các dự án khác và mã trong cùng một dự án.
Friend
các mục chỉ có thể được mã trong cùng một dự án, không phải để mã trong các dự án khác.
Private
các mục chỉ có thể được mã hóa trong cùng một lớp.
Thuộc tính khác với biến công, bởi vì với tài sản mà bạn có thể thực thi mã của riêng bạn khi khách hàng nhận được hoặc đặt giá trị . EDIT theo nhận xét của Deanna: Cũng lưu ý rằng các biến có thể được truyền ByRef sang một hàm và các thay đổi sẽ hoạt động như mong đợi. Đây không phải là trường hợp cho các thuộc tính.
NB C# có thể hiện đại hơn, nhưng IMHO xử lý VB6 thuộc tính và biến công khai là significantly better so với điều trị .Net.
- Trong VB6, bạn có thể thay đổi biến công khai thành thuộc tính mà không vi phạm khách hàng. Bạn thậm chí không cần phải biên dịch lại chúng. Not true in .Net.
- Trong VB6 biến công cộng có thể được sử dụng với ràng buộc dữ liệu. Not true in .Net.
- Trong VB6 biến công cộng có thể được sử dụng với giao diện. Not true in .Net.
IMHO Microsoft đã mắc lỗi thiết kế thực sự trong việc tạo ra sự khác biệt giữa các thuộc tính và trường công khai trong .Net. Không thuyết phục? Sau lần phát hành đầu tiên của .Net, các trình biên dịch C# và VB được sửa đổi để hỗ trợ automatically implemented properties. Điều này cho phép bạn tạo thuộc tính chỉ trong một dòng mã, để sau này có thể thêm logic vào get/set mà không gây ra sự cố. IMHO điều này chứng minh rằng các biến công cộng nên đã được thực hiện không thể phân biệt từ tài sản.
1 Giả sử loại dự án của bạn thực sự cho phép lớp học của bạn được sử dụng bởi các dự án khác (ví dụ: ActiveX DLL, OCX, hoặc ActiveX exe).
2 Trong các thủ tục Property Get
, Property Let
và Property Set
.
Er, bạn đã quên thuộc tính Riêng tư. Trong mọi trường hợp, câu hỏi cơ bản này được trả lời dễ dàng bằng cách đọc sách hướng dẫn. – Bob77