.NET框架-Clone什么

本文探讨了.NET框架中对象的Clone方法实现的浅表副本概念,解释了Clone只会复制值类型而不会复制引用对象的内容。通过示例代码展示了Clone对于值类型和引用类型的处理方式,并指出若需要实现深复制,可以参考作者提供的其他文章资源。
摘要由CSDN通过智能技术生成

作者:vuefine
文献:msdn
平台:.NET 2.0+


  .NET中有很多对象都实现了IClonable接口,这意味着它们能实现复制功能,比如说ArrayList对象( 用C#描述数据结构3:ArrayList),或自己编写实现了IClonable接口的对象。

  查看ArrayList中关于Clone方法的介绍:

创建 System.Collections.ArrayList 的浅表副本。

  很好奇,浅表副本的概念,上msdn查阅后,解释的意思比较晦涩一点,浅表复制集合是指仅仅复制集合元素,不管元素是值类型还是引用类型,但是Clone并不会复制对象(引用指向的对象)。新Clone后的集合中,引用还是指向同一个对象(原来集合中引用指向的对象)。

A shallow copy of a collection copies only the elements of the collection, whether they are reference types or value types, but it does not copy the objects that the references refer to. The references in the new collection point to the same objects that the references in the original collection point to.

  一句话概括,Clone实现的所谓浅表副本,Clone出来的对象复制了值类型,复制了引用,而未复制引用对象。这个时候,可能就要问了,未复制引用对象是什么意思?通过代码是最好说明问题的,请看下面的代码,

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值