MemberwiseClone与Clone
来源:互联网 发布:cms监控软件录像回放 编辑:程序博客网 时间:2024/05/21 03:19
MemberwiseClone 方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。
下面的代码就是演示这个问题:
using System;using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace CloneDemo{ [Serializable] class DemoClass { public int i = 0; public int[] iArr = { 1, 2, 3 }; public DemoClass Clone1() { return this.MemberwiseClone() as DemoClass; } public DemoClass Clone2() { MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, this); stream.Position = 0; return formatter.Deserialize(stream) as DemoClass; } } class Program { static void Main(string[] args) { DemoClass a = new DemoClass(); a.i = 10; a.iArr = new int[] { 8, 9, 10 }; DemoClass b = a.Clone1(); DemoClass c = a.Clone2(); // 更改 a 对象的iArr[0], 导致 b 对象的iArr[0] 也发生了变化 a.iArr[0] = 88; Console.WriteLine("MemberwiseClone"); Console.WriteLine(b.i); foreach (var item in b.iArr) { Console.WriteLine(item); } Console.WriteLine("Clone2"); Console.WriteLine(c.i); foreach (var item in c.iArr) { Console.WriteLine(item); } Console.ReadLine(); } }}
- MemberwiseClone与Clone
- MemberwiseClone与Clone
- MemberwiseClone与Clone
- MemberwiseClone与Clone
- C#之MemberwiseClone与Clone
- C#之MemberwiseClone与Clone
- C#之MemberwiseClone与Clone
- C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- C# 之类复制 MemberwiseClone与Clone(深 浅 Clone)
- C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- [转]C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- 解析深clone与浅clone
- jquery clone 与 clone(true) 的区别
- jquery clone 与 clone(true) 的区别
- fork与clone
- 浅谈clone与引用
- copy与clone
- 支持W3C的无缝滚动代码
- 这两天有幸接触了linux操作系统,
- 在LINQ to SQL中使用Translate方法以及修改查询用SQL
- CSS hack:区分IE6,IE7,firefox
- 7816 T0协议一个不优雅的地方
- MemberwiseClone与Clone
- 成就DBA职业生涯(转载)
- 一边播放一边下载的背景音乐
- MSBuild版本问题的解决方法:
- sp_cursoropen的动态传参用法
- asp超时的最大限制
- 收藏
- asp,正则表达式替换所有htm标签
- Linq动态查询与模糊查询(带源码示例)