2011-10-24 46 views
4

在想知道,如果这个方法返回集合或只是ReadOnlyCollection的实例,将包裹原始集合在某种程度上的副本,没有readding所有引用。AsReadOnly是否返回集合的副本?

,如果它要浪费存储空间,将其所有的指针复制到我的情况,我必须明白吗?

感谢您的任何答复。

+0

什么是浪费空间不是指针的副本,而是指向/引用的对象的副本... ;-) –

+1

http://msdn.microsoft.com/en-us /library/e78dcd75.aspx“是只读的是简单地防止包装集合的集合..” – wiero

+2

有时候,你只需要阅读文档:-) – GianT971

回答

6

,你可以在这里找到:List(Of T).AsReadOnly Method

为了防止名单(Of T)已进行任何修改,只能通过 此包装暴露名单(共T)。

其是只读的是简单地用一个包装 ,其防止修改集合的集合的集合;因此,如果对基础集合进行了更改 ,只读集合反映了这些更改 。

此方法是O(1)的操作。

因为在最后的陈述,如果你改变源收集他们说只读集合将反映这些变化,我相信这个包装不重新分配任何对象,但做什么,你还在你的问题描述。

1

AsReadOnly方法List<T>只是返回一个ReadOnlyCollection<T>包装在现有的List<T>。它不复制底层List<T>