博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#小知识点记录,对象的深拷贝
阅读量:4975 次
发布时间:2019-06-12

本文共 1881 字,大约阅读时间需要 6 分钟。

  1. 在CSDN中的定义是:

1     public static string CompareExchange(2     ref string location1,3     string value,4     string comparand5 )

   

 用locationl与comparand进行比较,如果相等,那么locationl的值就是value的值;如果不等locationl的值就不变。函数等同于一下函数(简单模拟):

 

1     static string CompareExchange(ref string location1, string value, string comparand)2         {3             if(location1==comparand)4             {5                 location1 = value;6             }7             return value;8         }

 示例:

1             string s1 = "123";2             string s2 = "456";3             string s3 = "123";4             string s4 = Interlocked.CompareExchange(ref s1, s2, s3);   //如果s1等于s3,那么就s2的值赋给s1,表达式的值是s2的值。5             Console.WriteLine(s1);6             Console.WriteLine(s4);

输出:

 

 

2.知识点二

下面是一个有趣而又使用的方法,利用序列化对一个对象进行深拷贝

1  public static object DeelClone(object original)               //利用序列化创建对象的深拷贝 2         {                                                       3                                                                 4             using (MemoryStream stram = new MemoryStream())    //构造临时内存流 5             {                                                   6                                                                 7                 IFormatter formatter = new BinaryFormatter();  //构造一个序列化格式化器  8                                                                 9                 formatter.Context = new StreamingContext(StreamingContextStates.Clone);10 11 12                 formatter.Serialize(stram, original);          //将流对象序列化到内存流中13 14 15                 stram.Position = 0;                            //反序列化之前,定位到内存流德尔起始位置16 17 18                 return formatter.Deserialize(stram);           //将对象图反序列化成一组新的对象图,19                                                                //并且返回对象图(深拷贝)的根20             }21         }

 

转载于:https://www.cnblogs.com/zhangyuanbo12358/p/3961815.html

你可能感兴趣的文章
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
SQL语言之概述(一)
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>