有如下类结构:Class A()
{
B b; //class B
C c; //class C
}
现在想做类A的深拷贝,是不是要让类A、B、C 都继承 ICloneable 接口,并实现
public object Clone()
{
return this.MemberwiseClone();
}??
{
B b; //class B
C c; //class C
}
现在想做类A的深拷贝,是不是要让类A、B、C 都继承 ICloneable 接口,并实现
public object Clone()
{
return this.MemberwiseClone();
}??
解决方案 »
- c#中使用File.Create()的问题
- DataGridView绑定DataSet中某个DataTable后的删除的问题
- help!-->无法在 DLL aspnet_isapi.dll 中找到名为 NoBestFitGetCPMaxCharSize 的入口点??
- Winform中,在两个TreeView控件之间进行拖放操作,如何使得拖到目标TreeView时能自动高亮显示鼠标移过的节点?
- 请问,GridView上的 如何删除该行数据,行ID已经选定 不知道用什么函数
- .net示例程序里面的makefile文件怎么使用? 见笑了
- .net 程序员,上海是天堂或是地狱??????//
- 提一个图片显示的问题
- 有c#.net吗?和c#有什么不同?
- 讨论:用C#实现多线程多页面的IE浏览器(netscaptor)的设计。
- Datalist 与 DropDownList
- C#中随便告诉你一个字符串,能New出来以该字符串为类名的对象吗?
{
A a = this.MemberwiseClone();
a.b = b.Clone();
a.c = c.Clone();
return a;
}
确实使用序列化和反序列化也可以,但是如果成员中有字符涉及高代理项 Unicode 字符串,反序列的时候将会丢失
public static object DeepClone(object source)
{
if (source == null)
return null;
Object objectReturn = null;
using (MemoryStream stream = new MemoryStream())
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, source);
stream.Position = 0;
objectReturn = formatter.Deserialize(stream);
}
catch (Exception e)
{
return null
}
}
return objectReturn;
}前提是该类能被序列化.
{
if (source == null)
return null; Object objectReturn = null;
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream,source);
stream.Seek(0, SeekOrigin.Begin);
objectReturn = formatter.Deserialize(stream);
}
return objectReturn;