Chỉ có một cách để mô phỏng điều này.
Bạn cần tạo lớp của riêng mình, với một mảng riêng tư.
Việc thực hiện tương tự như hầu hết của một mảng là một indexer:
Các '10 0,8' liên kết cho thấy các mô phỏng của một mảng hai chiều.
Nếu bạn chỉ triển khai trình chỉ mục với trình thu thập dữ liệu, người dùng chỉ có thể đọc các phần tử, nhưng không thể ghi chúng. Tuy nhiên, nếu mỗi phần tử là một đối tượng (kiểu tham chiếu), bạn không thể ngăn chặn việc sửa đổi các thuộc tính của đối tượng được truy cập.
Tuy nhiên, có một số cách để mô phỏng "chỉ đọc" các đối tượng:
- Tạo một lớp wrapper đó cho thấy nhiều các thuộc tính của mỗi phần tử trong mảng như chỉ đọc tài sản, do đó họ không thể được sửa đổi
- Sử dụng các loại giá trị nguyên thủy (như
int
)
- Đánh bại các thay đổi bằng cách trả về bản sao của phần tử trong mảng riêng thay vì phần tử gốc trong mảng riêng, để thay đổi đối tượng không ảnh hưởng đến đối tượng gốc trong mảng.
Trong các ngôn ngữ khác như C++ có tham chiếu và con trỏ đến giá trị không đổi, nhưng điều này không tồn tại trong C#.
không có gì được tích hợp sẵn cho các mảng đa chiều afaik – BrokenGlass
Dưới đây là một số câu trả lời từ một câu hỏi tương tự trên StackOverflow - http://stackoverflow.com/questions/678379/is-there-a-read-only-generic-dictionary-available -in-net –
Đó không phải là rất giống nhau, @ Scorpion-Prince. –