=波波日志 > Asp.Net/C#/WCF > C#对象深克隆例子=
[转]C#对象深克隆例子
+展开
-C#
//第一步,新建一个可序列化的类,用于这个对象的克隆操作
[System.Serializable]
class TestA
{
public int[] aaa ={0,0,0 };
public object GetClone(object obj)
{
using(System.IO.MemoryStream sm=new System.IO.MemoryStream())
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryformatter =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryformatter.Serialize(sm, obj);
sm.Seek(0, System.IO.SeekOrigin.Begin);
object ob = binaryformatter.Deserialize(sm);
return ob;
}
}
public object GetClone2(object o)
{
return this.MemberwiseClone();
}
}
//第二步,开始测试深克隆与浅克隆的区别(浅克隆不可以创建出新的引用,深克隆则相反)
class program
{
static void Main()
{
TestA a = new TestA();
TestA b = (TestA)a.GetClone(a);
a.aaa[0] = 123;
b.aaa[0] = 222;
System.Console.WriteLine(a.aaa[0]);
System.Console.WriteLine(b.aaa[0]);
System.Console.WriteLine("___________________________");
TestA a1 = new TestA();
TestA b1 = (TestA)a1.GetClone2(a);
a1.aaa[0] = 333;
b1.aaa[0] = 444;
System.Console.WriteLine(a1.aaa[0]);
System.Console.WriteLine(b1.aaa[0]);
System.Console.ReadLine();
}
}
[System.Serializable]
class TestA
{
public int[] aaa ={0,0,0 };
public object GetClone(object obj)
{
using(System.IO.MemoryStream sm=new System.IO.MemoryStream())
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryformatter =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryformatter.Serialize(sm, obj);
sm.Seek(0, System.IO.SeekOrigin.Begin);
object ob = binaryformatter.Deserialize(sm);
return ob;
}
}
public object GetClone2(object o)
{
return this.MemberwiseClone();
}
}
//第二步,开始测试深克隆与浅克隆的区别(浅克隆不可以创建出新的引用,深克隆则相反)
class program
{
static void Main()
{
TestA a = new TestA();
TestA b = (TestA)a.GetClone(a);
a.aaa[0] = 123;
b.aaa[0] = 222;
System.Console.WriteLine(a.aaa[0]);
System.Console.WriteLine(b.aaa[0]);
System.Console.WriteLine("___________________________");
TestA a1 = new TestA();
TestA b1 = (TestA)a1.GetClone2(a);
a1.aaa[0] = 333;
b1.aaa[0] = 444;
System.Console.WriteLine(a1.aaa[0]);
System.Console.WriteLine(b1.aaa[0]);
System.Console.ReadLine();
}
}
来源:http://2sws.blog.163.com/blog/static/1791024920098434454449/
类别:Asp.Net/C#/WCF 作者:转载 日期:2010-12-07 【评论:0】
相关文章
暂时没有评论!
发表留言
热门博文
- IE里Cookie跨域不能读取
- web服务因URL意外地以/**结束,请求格式无法识别
- 去掉隐藏asp.net编译出错aspxerrorpath错误参数
- 解决asp.net验证视图状态 MAC 失败
- 找不到System.Web.Script.Services.ScriptService
- 在aspx,ashx页面挂起线程执行
最新博文
- WCF利用限流(Throttling)控制并发访问[下篇]
- WCF利用限流(Throttling)控制并发访问[上篇]
- ConcurrencyMode.Multiple模式下的WCF服务同步上下文对并发的影响[下篇]
- ConcurrencyMode.Multiple模式下的WCF服务同步上下文对并发的影响[上篇]
- WCF基于ConcurrencyMode.Reentrant模式下的并发控制机制
- C#如何设置标记方法等为否决的不可用
随机博文
- 用C#编写获取远程IP,MAC的方法
- C#2.0中,SerialPort如何读取串口数据并显示在TextBox上
- 局域网QQ第三版(V1.4)
- C#设置richtextbox滚动到最后一行
- 反射技术实例
- 《叩开C#之门》系列之对象封装与C#的类
广告商赞助

