我正在编写一个实现(V)PTEST
的自定义类,而且我不确定如何处理IDictionary
。是应该将每个元素复制到目标数组(浅层复制),还是应该复制/克隆每个元素,然后将其放在目标数组中(深层复制)?
答案 0 :(得分:5)
合同没有定义实现,但是所有通用集合似乎都是浅层副本(参见http://referencesource.microsoft.com/#q=List.CopyTo)。这是有道理的,因为没有定义的方法来深层复制任何object
,这将是CopyTo
实现的一部分。
这取决于您的场景,如果您根本不打算使用此方法,请考虑不实现它并抛出NotSupportedException
。如果其他人将使用您的集合,请实现浅拷贝以与标准.NET库对齐。如果您需要深层复制方法,请将其作为单独的方法添加(可能通过实施ICloneable
)。