【发布时间】:2010-01-08 02:11:01
【问题描述】:
我有一个库,它返回一个由 IDictionary、IList 和原始类型(字符串和整数)组成的分层列表。目前我无法更改此数据的返回方式。
我有另一个强类型类,它使用这些数据并将其转换为业务对象。返回的数据中有一个“属性”列表,我想将其导入到我的强类型类中。然后我可以处理层次结构。
我的问题是:如果我这样做:
MyCustomClass.Properties = HierarchicalData["some_name"]
MyCustomClass 是我的强类型类,而 HierarchicalData 是 IDictionary 数据,当我稍后调用时会发生什么:
HierarchicalData = null
分层数据可以被处置和发布吗?在这种情况下,“some_data”是另一个字典,因此从技术上讲,这就是所有需要保留的内容。是否需要显式复制而不是导入,例如:
MyCustomClass.Properties = HierarchicalData["some_name"].ToDictionary<string, string>( /* selector */)
澄清:我不担心包含被垃圾收集的属性的字典。我想确保 HierarchicalData __can__ 被删除,因为它非常大,我需要使用其中的几个。
【问题讨论】:
-
Dictionary没有实现IDisposable,因此不需要(也不能)处置它。您只是希望它被 GC 收集。 -
是的,这里我说的处置是指超出范围,因此是收集的候选对象,而不是像 Dispose() 中那样。
标签: c# design-patterns data-structures garbage-collection