Bối cảnh: Tôi đã kèm theo (cha mẹ) lớp E với lớp lồng nhau N với một số trường hợp N trong E. Trong lớp (cha) kèm theo tôi đang thực hiện một số phép tính và tôi đặt giá trị cho mỗi thể hiện của lớp lồng nhau. Một cái gì đó như thế này:cách truy cập vào các thành viên riêng tư của lớp lồng nhau?
n1.field1 = ...;
n1.field2 = ...;
n1.field3 = ...;
n2.field1 = ...;
...
Đây là một phương pháp đánh giá lớn (trong lớp cha). Ý định của tôi là - vì tất cả các phép tính đều ở trong lớp cha (chúng không thể được thực hiện trên mỗi thể hiện lồng nhau vì nó sẽ làm cho mã phức tạp hơn) - làm cho các setters chỉ có sẵn cho lớp cha và getters công khai.
Và bây giờ có một vấn đề:
- khi tôi làm cho setters tư nhân, tầng lớp phụ huynh không thể acces họ
- khi tôi làm cho họ công khai, mọi người đều có thể thay đổi các giá trị
- và C# không có khái niệm bạn bè
- Tôi không thể chuyển giá trị trong hàm tạo vì cơ chế đánh giá lười được sử dụng (vì vậy các cá thể phải được tạo khi tham chiếu chúng - tôi tạo tất cả đối tượng và phép tính được kích hoạt theo yêu cầu)
Tôi bị kẹt - cách thực hiện điều này (giới hạn quyền truy cập tối đa lớp cha, không còn nữa, không kém)?
tôi nghi ngờ tôi sẽ nhận được câu trả lời-câu hỏi đầu tiên - "nhưng tại sao bạn không chia đánh giá cho mỗi trường" - vì vậy tôi trả lời này bằng ví dụ: làm thế nào để bạn tính toán min và max giá trị của một bộ sưu tập? Một cách nhanh chóng? Câu trả lời là - trong một lần. Đây là lý do tại sao tôi có một hàm eval tính toán và đặt tất cả các trường cùng một lúc.
Từ khóa nội bộ có đủ không? – Kimi
Quá nhiều :-). – greenoldman
Bạn không tin tưởng đồng nghiệp của mình? –