【发布时间】:2013-06-05 08:41:54
【问题描述】:
我的 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 小时数的人可能有一个更整洁、更清晰的想法。
有人吗?
【问题讨论】:
-
我认为您自己的解决方案已经足够好,您不需要任何其他解决方法
-
@SysDragon:基于集合中元素的数量,我同意。
标签: vb.net class properties generic-list