Bri*_*ndy 41
你想使用Clear
,如果你有对同一个对象的其他引用,并希望让他们都指向同一个对象.
例如,您可能有一个工作队列,您可以在其中存储要执行的任务.在一个或多个线程中,您将工作项从此队列中取出(当然,您使用锁定以确保一次最多一个线程访问队列).如果在某些时候你想要清空队列,那么你可以使用Clear
并且所有线程仍将指向同一个对象.
如此处所示,当您使用Clear
所有项目时将被删除,并且Count
将为0,但Capacity
将保持不变.通常,Capacity
保持不变是一件好事(为了提高效率),但可能存在一些极端情况,即您拥有大量物品并希望最终释放内存.
上面的MSDN链接还提到Clear是O(n)操作.而简单地替换引用将是O(1)操作,然后最终它将被垃圾收集,但可能不会立即.但是替换引用也意味着需要重新分配构成容量的内存.
Brian是正确的,但更具体地说,该Clear
方法从集合的当前实例中删除所有项目.实例化一个新集合并将其引用分配给您的变量将完全为您提供一个全新的实例,并且可能会导致一些意外后果,具体取决于其他人是否持有对旧实例的引用.如果另一个线程具有对该集合的引用,即使您已创建新实例,它们仍将保留对旧集合的引用.
归档时间: |
|
查看次数: |
13448 次 |
最近记录: |