我有一个库,该库返回由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而言,其他未引用的部分将成为无根的,并在某个时刻完成。