gpt4 book ai didi

.net - 为什么克隆(在 .NET 中)如此困难?

转载 作者:行者123 更新时间:2023-12-03 12:08:05 24 4
gpt4 key购买 nike

过去我需要克隆对象,结果发现它们没有实现 Clone()方法,迫使我手动完成(创建一个新实例并将所有属性从原始实例复制到新实例)

为什么克隆不像复制分配对象的内存块那么容易,因此有 Clone object 中的方法类,让.NET中的所有类都继承它?

最佳答案

因为这不会执行深度克隆,而这通常是克隆真正需要的。想象一下,您有一个对数组或列表的引用……只需复制对象占用的内存即可克隆该引用。对数组的任何更改都将通过克隆以及原始对象可见 - 因此两个对象仍然连接,这违反了正常的克隆点。

如果您想完全实现该功能,这很容易——这就是 Object.MemberwiseClone() 是为了。大多数时候,如果克隆一个对象是有意义的(克隆的 NetworkStream 是什么意思?)克隆每个属性是有意义的......除非它已经引用了一个不可变的值,等等。换句话说,这是一个自然难题,这就是为什么大多数类型不支持克隆的原因。

如果您尽可能坚持使用不可变类型,那么这不是什么大问题……诚然,这会使其他事情变得更加困难,但在许多情况下它可能非常强大。

关于.net - 为什么克隆(在 .NET 中)如此困难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1308803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com