我正在编写一个实现的自定义类,IDictionary
但我不知道该怎么做CopyTo
。应该将每个元素都复制到目标数组(浅拷贝),还是应该复制/克隆每个元素,然后将其放入目标数组(深拷贝)?
问问题
1179 次
1 回答
5
合同未定义实现,但是所有通用集合似乎都进行了浅拷贝(请参阅http://referencesource.microsoft.com/#q=List.CopyTo)。这是有道理的,因为没有定义的方法来深度复制 any object
,这将是CopyTo
实现的一部分。
这取决于您的情况,如果您根本不打算使用此方法,请考虑不实施它并抛出NotSupportedException
. 如果其他人将使用您的集合,请实施浅拷贝以与标准 .NET 库保持一致。如果您需要深拷贝方法,请将其添加为单独的方法(可能通过实现ICloneable
)。
于 2015-06-09T02:35:18.840 回答