C#整理——深浅度复制
2013-07-22 11:03
162 查看
一:浅度复制(新对象的引用成员指向源对象中相同引用成员的对象,即另个不同对象的相同类型的引用指向同一个对象):
如:
结果:5,5
5,8
二:深复制(进行深复制的类要实习ICloneable接口)(理解:同一个类的不同对象的相同类型的引用之间只是完成了由一方给另一方赋值,这两个引用并没有指向同一对象)
结果:5,5
5,5
如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication13 { public class Content { public int Val2; } public class Cloner { public int Val; public Content Mycontent = new Content();//这是引用类型的字段,可以进行浅复制; public Cloner(int newVal) { Mycontent.Val2 = newVal; Val=newVal; //Val不是引用类型而是值类型,所以不能进行浅复制,就算进行了也无效; } public object GetCopy() { return MemberwiseClone(); } } class Tester { static void Main(string[] args) { Cloner source = new Cloner(5); Cloner target = (Cloner)source.GetCopy(); Console.WriteLine("{0},{1}",target.Val,target.Mycontent.Val2); source.Mycontent.Val2 = 8; Console.WriteLine("{0},{1}", target.Val, target.Mycontent.Val2); Console.ReadKey(); } } }
结果:5,5
5,8
二:深复制(进行深复制的类要实习ICloneable接口)(理解:同一个类的不同对象的相同类型的引用之间只是完成了由一方给另一方赋值,这两个引用并没有指向同一对象)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication13 { public class Content { public int Val2; } public class Cloner:ICloneable { public int Val; public Content Mycontent = new Content(); public Cloner(int newVal) { Mycontent.Val2 = newVal; Val=newVal; } public object Clone() { Cloner clonedCloner = new Cloner(Mycontent.Val2); return clonedCloner; } } class Tester { static void Main(string[] args) { Cloner source = new Cloner(5); Cloner target = (Cloner)source.Clone(); Console.WriteLine("{0},{1}",target.Val,target.Mycontent.Val2); source.Mycontent.Val2 = 8; Console.WriteLine("{0},{1}", target.Val, target.Mycontent.Val2); Console.ReadKey(); } } }
结果:5,5
5,5
相关文章推荐
- C#将文件复制到指定文件夹并整理
- c#深浅复制
- C#的GC机制(来自网摘复制,未整理)
- c#的各种深浅复制
- C#中的深复制和浅复制(在C#中克隆对象) 整理
- mongo 脚本对应的C#实现方式(待整理)
- C# 参考:反射 -- 学习笔记整理,概念与应用
- C#浅复制和深复制
- 《MongoDB权威指南》学习整理----MongoDB复制
- 整理C# 读取文件Scv格式代码
- C# 深度复制
- C#基础知识整理 基础知识(19) 值类型的装箱和拆箱(二)
- 使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得 ------(我复制别个的)
- C# 自定义事件整理项目 - EventDemo
- C# 文件流操作 之 删除、复制、转移多个文件
- C# Winform应用程序占用内存较大解决方法整理
- C#中复制自定义对象数据
- C#中的一些疑惑(网摘整理)
- C#基础知识整理:C#类和结构(1)
- C#基础知识整理:C#类和结构(2)