对象中的对象可以持久吗? (vb .net)

时间:2009-12-15 16:16:43

标签: vb.net object collections

Dim BigCollection As New Collection     Dim SmallCollection作为新系列     SmallCollection.Add(“Hello World”)     BigCollection.Add(SmallCollection)

MsgBox(BigCollection(1)(1)) 'shows "Hello World
SmallCollection.Clear()
MsgBox(BigCollection(1)(1)) 'ERROR (Collection is empty)

我想要的是,一旦我在BigCollection中放了一些东西,它就会留在那里,我不希望它可以从外面改变。我希望能够清除SmallCollection但不应该在BigCollection中清除它。有任何想法吗? 也许这是不好的方法,我不是这里的.net大师;)

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您想要一个不应该更改的集合,那么您应该通过ReadOnlyCollection(Of T)公开它。但是,从标准Collection类型创建一个类型具有相当笨拙的语法。

Dim completeSmall As New ReadOnlyCollection(Of Object)(SmallCollection.Cast(Of Object))

如果您使用List(Of Object)而不是Collection开始,会更容易。最终语法更容易阅读

Dim SmallCollection As New List(Of Object)()
...
Dim completeSmall As New ReadOnlyCollection(Of Object)(SmallCollection)