4

我正在编写一个实现的自定义类,IDictionary但我不知道该怎么做CopyTo。应该将每个元素都复制到目标数组(浅拷贝),还是应该复制/克隆每个元素,然后将其放入目标数组(深拷贝)?

4

1 回答 1

5

合同未定义实现,但是所有通用集合似乎都进行了浅拷贝(请参阅http://referencesource.microsoft.com/#q=List.CopyTo)。这是有道理的,因为没有定义的方法来深度复制 any object,这将是CopyTo实现的一部分。

这取决于您的情况,如果您根本不打算使用此方法,请考虑不实施它并抛出NotSupportedException. 如果其他人将使用您的集合,请实施浅拷贝以与标准 .NET 库保持一致。如果您需要深拷贝方法,请将其添加为单独的方法(可能通过实现ICloneable)。

于 2015-06-09T02:35:18.840 回答