Tôi có một lớp công khai trong dự án VB.NET của tôi có thuộc tính List(Of String)
. Danh sách này cần phải được sửa đổi bởi các lớp khác trong dự án, nhưng kể từ khi lớp có thể (tại một thời điểm nào đó trong tương lai) được tiếp xúc bên ngoài dự án, tôi muốn nó không thể sửa đổi ở mức mà mức. Việc sửa đổi thuộc tính hiện tại trong dự án sẽ chỉ được thực hiện bằng cách gọi các phương thức của danh sách (đặc biệt là .Add
, đôi khi .Clear
), chứ không phải bằng cách thay thế bán buôn giá trị bất động sản với Danh sách mới (đó là lý do tại sao tôi có nó là tài sản ReadOnly
).Tạo thuộc tính Danh sách không thể thay đổi bên ngoài
tôi đã đưa ra một cách để làm việc đó, nhưng tôi không chắc chắn rằng đó là chính xác những gì bạn sẽ gọi là "thanh lịch".
Đó là điều này:
Friend mlst_ParameterNames As List(Of String) = New List(Of String)
Public ReadOnly Property ParameterNames() As List(Of String)
Get
Return New List(Of String)(mlst_ParameterNames)
End Get
End Property
Bây giờ này chỉ hoạt động tốt và dandy. Bất kỳ lớp nào trong dự án truy cập trực tiếp vào trường mlst_ParameterNames
đều có thể sửa đổi nó khi cần, nhưng mọi thủ tục truy cập nó thông qua tài sản công cộng có thể làm tan biến nó thành nội dung trái tim của họ. bản sao của danh sách, không phải danh sách.
Nhưng, tất nhiên, mang trên không đó là lý do tại sao tôi cảm thấy rằng nó chỉ ... tốt, nội bộ "sai" ở một mức độ nào đó, mặc dù nó hoạt động.
Danh sách tham số sẽ không bao giờ lớn. Tối đa nó sẽ chỉ chứa 50 mục, nhưng thường ít hơn mười mục, vì vậy tôi không thể thấy điều này bao giờ là một kẻ giết người hiệu suất. Tuy nhiên nó đã tất nhiên đặt tôi nghĩ rằng một ai đó, với giờ VB.NET nhiều hơn theo vành đai của họ, có thể có một ý tưởng gọn gàng hơn và sạch hơn.
Bất kỳ ai?
Tôi nghĩ rằng giải pháp của riêng bạn đủ tốt và bạn không cần bất kỳ workaroung nào khác – SysDragon
@SysDragon: dựa trên số lượng yếu tố trong bộ sưu tập, tôi đồng ý. – Paul