C#之Clone
2024-10-14 04:19:08
因为类的实例是引用类型,要想用原有的类中的实例的数据的话,既要想创建原对象的一个副本的话,只能用clone方法。
Clone方法分为深clone和浅clone
在C#中提供了浅clone的方法,即为MemberwiseClone()
class Program
{
static void Main(string[] args)
{
Person p = new Person() { Age=, Name="张三" };
Person p2 = (Person)p.Clone();
p2.Name = "李四";
Console.WriteLine("p.Name="+ p.Name);
Console.WriteLine("p2.Name=" + p2.Name);
Console.ReadKey(); }
}
public class Person:System.ICloneable
{
public string Name { get; set; }
public int Age { get; set; } public object Clone()
{
return this.MemberwiseClone();
}
}
输出结果:
MemberwiseClone()方法执行的只是浅层拷贝。而深层拷贝要递归的拷贝其字段所引用的所有对象。
深克隆:即,要在它的每一个包含的类中实现浅Clone
public class DeepClone : System.ICloneable
{
Person g;
Person b;
public Object Clone()
{
DeepClone dc = (DeepClone)this.MemberwiseClone();
dc.g = (Person)(this.g.Clone());
dc.b = (Person)(this.b.Clone());
return dc;
}
}
最新文章
- 数据访问模式:Identity Map(标识映射)模式
- android-解决EditText的inputType为Password时, 字体不一致的问题
- hdu----(2848)Repository(trie树变形)
- DTCMS清除&;emsp;&;amp;
- [原]Unity3D深入浅出 - 认识开发环境中的Project面板
- Java基础知识强化37:StringBuffer类之StringBuffer的构造方法
- 自定义清除重复uses-permission申明的AS插件
- linux命令之ifconfig详细解释
- VirtualBox安装linux mint教程
- C# tostring
- input type=";file";指定文件类型为excel
- Windows10配置JDK环境变量
- Cesium 中两种添加 model 方法的区别
- Apartment 2019:(1)创建墙体
- 用 pyinstaller 打包含xpinyin 库的Python程序
- K8S Calico
- JS数组的需要注意的问题
- (二)创建ROS工作空间
- Java多线程之Callable接口与Runnable的实现以及选择
- kettle教程一
热门文章
- SP1811 LCS - Longest Common Substring
- Educational Codeforces Round 59 (Rated for Div. 2)
- 10.8 wtx模拟题题解
- node mysql问题:Client does not support authentication protocol requested by server; consider upgrading MySQL client!
- 【STL基础】vector
- 异步解决方案(三)Promise
- Linux中***配置
- partial、struct、interface与C#和CLR的关系
- vs如何在Windows身份验证下调试Web项目
- poj1840 五项式等于0(哈希)