Đọc về vấn đề của việc tạo ra một vector đọc chỉ nguyên thủy trong C# (về cơ bản, bạn không thể làm điều đó),Tại sao không có lớp ReadOnlyList <T> trong thư viện System.Collections của C#?
public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You can still changes values
tôi đã học về ReadOnlyListBase. Đây là một lớp cơ sở cho các thùng chứa các đối tượng cho phép các vị trí của chúng được truy cập nhưng không được sửa đổi. Thậm chí có một ví dụ trong Microsoft msdn.
http://msdn.microsoft.com/en-us/library/system.collections.readonlycollectionbase.aspx
tôi chút thay đổi ví dụ trong MSDN sử dụng bất kỳ loại:
public class ReadOnlyList<T> : ReadOnlyCollectionBase {
public ReadOnlyList(IList sourceList) {
InnerList.AddRange(sourceList);
}
public T this[int index] {
get {
return((T) InnerList[ index ]);
}
}
public int IndexOf(T value) {
return(InnerList.IndexOf(value));
}
public bool Contains(T value) {
return(InnerList.Contains(value));
}
}
... và nó hoạt động. Câu hỏi của tôi là, tại sao không tồn tại lớp này trong thư viện chuẩn của C#, có lẽ trong System.Collections.Generic? Tôi có thiếu nó không? Nó đâu rồi? Cảm ơn bạn.
Cập nhật năm 2015: .NET 4.5 hiện có ImmutableList https://msdn.microsoft.com/en-us/library/dn467185(v=vs.111).aspx –