您的位置:首页 > 其它

实现自定义类型的深拷贝

2010-03-04 21:50 127 查看
 第一次写技术博文,手生的很,水平也有限,有什么不对的地方大家多多指教。

   大家都知道class是引用类型,如果将一个引用变量分配给另一个引用变量,那么这个赋值操作进行的是一个浅拷贝,这两个引用变量将指向内存中的同一个对象。 我们有这样一个类的赋值操作就是执行这样的操作。

代码static void Main(string[] args)
{
TestClass class1 = new TestClass(1, 1);
TestClass class2 = (TestClass)class1.Clone();
//改变class2不影响class1
class2.X = 2;
}
包含引用变量字段的类型,实现深拷贝的方式跟上面的方法类似,只是需要注意引用类型在栈中保存的是指向托管堆的指针所有直接赋值和MemberwiseClone方法都是把指针地址复制,实际上还是指向同一个实例。我们需要在Clone方法中用同样的值构建全新的类型实例并返回。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: