我有一个库,该库返回由IDictionary,IList和基本类型(字符串和整数)组成的层次结构列表。目前,我无法更改此数据的返回方式。

我还有另一个强类型的类,它使用此数据并将其转换为业务对象。返回的数据中有一个“属性”列表,我想将其导入到我的强类型类中。然后,我可以处理层次结构。

我的问题是:如果我这样做:

MyCustomClass.Properties = HierarchicalData["some_name"]


其中MyCustomClass是我的强类型类,而HierarchicalData是IDictionary数据,当我以后调用时会发生什么:

HierarchicalData = null


可以处理和发布分层数据吗?在这种情况下,“ some_data”是另一本词典,因此从技术上讲,这就是所有需要保留的内容。我是否需要做一个明确的副本而不是导入,例如:

MyCustomClass.Properties = HierarchicalData["some_name"].ToDictionary<string, string>( /* selector */)


澄清:我不担心包含垃圾收集属性的字典。我想确保可以删除HierarchicalData ______,因为它很大,我需要使用其中的几个。

最佳答案

是。一旦没有对HierarchicalData的引用,它将成为收集的候选对象。

由于您引用了为“ some_name”键存储的数据,因此不会收集该特定元素(另一个字典)。但是,就GC而言,其他未引用的部分将成为无根的,并在某个时刻完成。

10-06 14:34