2

我对在 C# 中复制集合对象非常麻烦感到震惊,尤其是在您想要深度复制的情况下。.Net 没有采用 Java clone() 路线是否有充分的设计理由,是否有一些我在 C#/.Net 中遗漏的等效范例?

4

1 回答 1

7

浅拷贝

对于浅拷贝,.NET 提供Object.MemberwiseClone

深拷贝

对于深拷贝,Microsoft 建议实施自定义Copy方法。深拷贝需要关于类本身的复杂知识——事实上,对于给定的类,制作多种不同类型的深拷贝甚至可能是有意义的。因此,没有为此目的预定义的方法或接口。

但是 ICloneable 接口呢?

ICloneable 接口,其用途可能大致对应于 Java 的Object.clone. 但是,Microsoft建议不要使用它,因为它没有指定副本需要多浅或多深才能正确实现接口。

于 2013-01-10T12:04:53.197 回答