C#深拷贝

C# 有值类型和引用类型。值类型,如int之类的。

引用类型,比如我们自定义的类。通过new的方式创建,new返回的其实是个“指针”,

或者说是引用,他自己在栈上,但是new分配的空间在堆上。 如果直接对引用赋值的话,

相当于是改变“指针”的指向。

代码逻辑如下

public class Model
{
	//Model的基础配置
	.........
	
	 //深拷貝賦值
	  public Model DeepClone()
	  {
	      using (Stream objectStream = new MemoryStream())
	      {
	          IFormatter formatter = new BinaryFormatter();
	          formatter.Serialize(objectStream, this);
	          objectStream.Seek(0, SeekOrigin.Begin);
	          return formatter.Deserialize(objectStream) as Model;
	      }
	  }
  }

调用深拷贝

//深拷贝一个值给model
Model model=new Model();
model = modellist[0].DeepClone();

你可能感兴趣的:(1024程序员节)