C#实现深复制有几种方法? 给出关键部分代码即可,需要附上文字说明。有几种要几种,哪怕换汤不换药的也要! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Deep copy! google 一下吧多滴很!基本上就两种,一是手工编码实现;二是通过序列化后复制,然后再反序列化实现!俺用第二种! 《深入浅出设计模式(Java/C#版)》上关于原型模式中说到深拷贝和浅拷贝的区别,讲的蛮详细的,你可以去书店看看。:) c#入门经典里的public class Cloner:ICloneable{ public Content MyContent = new Content(); ... pubilc object Clone() { Cloner clonedCloner = new Cloner(); clonedCloner.MyCOntent= MyCOntent.Clone(); return clonedCloner; }}这里调用了默认的构造函数,简化了创建了一个新的Cloner对象的语言,为了使这段代码能够正常工作,还需要在Cloner类上实现ICloneable接口[ComVisible(true)]public interface ICloneable{ // Methods object Clone();} 是在vs05下的 2.0语法 using System;class DeepCopy : ICloneable{ public int i; public DeepCopy() { } // 供Clone方法调用的私有构造函数 private DeepCopy(int i) { this.v = (int)i.Clone(); } public Object Clone() { // 构造一个新的DeepCopy对象 return new DeepCopy(this.i); } public void Display() { Console.Write( i + ", "); Console.WriteLine(); }} MemoryStream memoryStream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(memoryStream, this); memoryStream.Position = 0; .....................以后我也用序列化,也不麻烦。不就是内存块的复制? 做combobox绑定时 数字前如何自动+0 回调函数如何在DLL和应用程序上使用 文字多于代码 一个表的数据 拷贝到 另外一张表中 Windows.Form中怎么让子窗体充满父窗体 如何 使按钮点下变色 C# 邮件发送问题 请问能用什么方法把DataGrid内显示的数据导出Excel表格呢! 谁能帮我把这VB.net的代码转成C#,谢谢! web页面的用户登录界面 C#网络编程中保持长连接的问题
一是手工编码实现;
二是通过序列化后复制,然后再反序列化实现!俺用第二种!
public class Cloner:ICloneable
{
public Content MyContent = new Content();
...
pubilc object Clone()
{
Cloner clonedCloner = new Cloner();
clonedCloner.MyCOntent= MyCOntent.Clone();
return clonedCloner;
}
}这里调用了默认的构造函数,简化了创建了一个新的Cloner对象的语言,为了使这段代码能够正常工作,还需要在Cloner类上实现ICloneable接口
[ComVisible(true)]
public interface ICloneable
{
// Methods
object Clone();
}
是在vs05下的 2.0语法
{
public int i;
public DeepCopy()
{
}
// 供Clone方法调用的私有构造函数
private DeepCopy(int i)
{
this.v = (int)i.Clone();
}
public Object Clone()
{
// 构造一个新的DeepCopy对象
return new DeepCopy(this.i);
}
public void Display()
{
Console.Write( i + ", ");
Console.WriteLine();
}
}
formatter.Serialize(memoryStream, this); memoryStream.Position = 0;
.....................以后我也用序列化,也不麻烦。不就是内存块的复制?