一般的等号赋值只是传递引用,请问如何能得到对象的拷贝?
解决方案 »
- 未能加载文件或程序集“Order”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
- 请高手帮忙
- 再问一下DATAGRIDVIEW数据读取问题
- 谁共享下C#开发的农场外挂的东西,或给点有用的参考信息
- C#应用程序中关于MessageBox.Show的问题
- 键盘上的WIN键
- 帮我看看这句 代码的意思
- C#.NET中如何实现折叠菜单按钮
- 3.25下午2点,深圳市c#程序员聚会!
- 怎么根据条件查找字符串中的数字呢?
- 保存数据,一会儿出错,一会儿不出错!!.Net真是怪!!!郁闷中.......................
- 菜鸟问题:数据库表里面的一列里面放了很多数据
这是每个对象都有的属性!!~~
可以用XmlSerializer,或者Binary/Soap Formatter先序列化,再反序列化
前提是此对象支持序列化操作
Object.MemberwiseClone是浅拷贝
基本上没用
实现了ICloneable的类并不一定就支持深拷贝
比如class Array
的方法是最好的,写少很多代码,而且对任何一种类型的对象都适用,不过不一定用Xml序列化,用MemoryStream,序列化到流在返回这样的速度更好
>>> 就是出于避免指针操作这种“不安全代码”的目的么?嗯,倒不是不安全代码的问题
比如这样一个class:
class Person
{
public string Name;
}
建立一个Person对象:
Person p1 = new Person();
p1.Name = "Sunmast";
复制给另外一个引用:
Person p2 = p1;
p2.Name = "Xiawei";那么此时p1.Name = ? 应该也变成"Xiawei"了
如果是深拷贝,就不会出现这种问题,p1和p2应该完全独立