实现自定义类型的深拷贝
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方法中用同样的值构建全新的类型实例并返回。
大家都知道class是引用类型,如果将一个引用变量分配给另一个引用变量,那么这个赋值操作进行的是一个浅拷贝,这两个引用变量将指向内存中的同一个对象。 我们有这样一个类的赋值操作就是执行这样的操作。
代码static void Main(string[] args)
{
TestClass class1 = new TestClass(1, 1);
TestClass class2 = (TestClass)class1.Clone();
//改变class2不影响class1
class2.X = 2;
}
包含引用变量字段的类型,实现深拷贝的方式跟上面的方法类似,只是需要注意引用类型在栈中保存的是指向托管堆的指针所有直接赋值和MemberwiseClone方法都是把指针地址复制,实际上还是指向同一个实例。我们需要在Clone方法中用同样的值构建全新的类型实例并返回。
相关文章推荐
- NHibernate自定义集合类型(中):通用实现方式
- 【干货】C++通过模板特化实现类型萃取实例--实现区分基本类型与自定义类型的memcpy
- Android的程序关联和自定义类型文件的方法步骤和实现过程
- 【干货】C++通过模板特化实现类型萃取实例--实现区分基本类型与自定义类型的memcpy
- NHibernate自定义集合类型(上):基本实现方式
- 08.java语言基础-实现int类型数组元素拷贝
- 纸张类型自定义的VB6实现
- Webwork实现自定义数字类型转换器
- C++中如何实现自定义类型的迭代器
- 深拷贝,浅拷贝,自定义的类的对象实现拷贝
- 通过自定义字段类型实现SharePoint列表的父子关系
- 自定义tag标签-实现long类型转换成Date类型
- copy文件中指定 文本类型文件(*.txt, *.c, *.h等文件),支持子目录递归拷贝,用 matlab 实现。
- 自定义数据类型,实现数据排序
- 实现比较器接口IComparable<T>,让自定义类型数组也能排序
- sharepoint2010问卷调查(4)-实现问卷的重复答复次数(采用自定义字段类型和JS)
- xFire实现Java间自定义类型的WebService调用(二)
- Android进程间传递自定义类型参数实现Parcelable接口
- 在自定义Pipeline组件中实现drop-down list类型的Design-Time Property
- C# 自定义类型实现foreach 迭代