我的 VB.NET 项目中有一个公共类,它有一个List(Of String)
属性。此列表需要由项目中的其他类修改,但由于该类可能(在将来的某个时间)暴露在项目之外,我希望它在该级别是不可修改的。项目中现有属性的修改只能通过调用列表的方法(特别是.Add
,偶尔.Clear
)来完成,而不是通过用新列表完全替换属性值来完成(这就是我将它作为ReadOnly
属性的原因)。
我想出了一种方法,但我不确定它是否正是你所说的“优雅”。
是这样的:
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
现在这只是工作正常和花花公子。项目中直接访问该mlst_ParameterNames
字段的任何类都可以根据需要对其进行修改,但是通过公共属性访问它的任何程序都可以将其修改为他们想要的内容,但是由于属性程序总是返回一个副本,因此将一事无成列表,而不是列表本身。
但是,当然,这会带来开销,这就是为什么我觉得它只是......好吧,在某种程度上,本能地“错误”,即使它有效。
参数列表永远不会很大。最多它只包含 50 项,但更常见的是少于 10 项,所以我看不出这会成为性能杀手。然而,这当然让我想到,拥有更多 VB.NET 小时数的人可能有一个更整洁、更清晰的想法。
任何人?