我需要'复制'一个对象。我尝试使用IClonable接口,但无济于事,最灵敏的解决方案是使用不安全的代码创建指向对象的指针,然后在C中编写类似Memcpy的方法。唯一的问题是创建指向托管类型的指针。我假设这样做会带来垃圾收集器的问题,但如果可以使用编组或其他东西来创建指向托管对象的指针,那么我可以在C中编写像memcpy这样的函数,只需复制我的对象。如果结构可以不受管理那么为什么不能对象呢?一个对象本质上是一个struct指针,所以理论上它应该等于IntPtr的大小吧?
答案 0 :(得分:3)
我自己解决了这个问题,因为那些说我使用指针的想法来自我的C背景...无论如何使用序列化这种方法完全符合我的需要。
public object Clone()
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, this);
ms.Position = 0;
return formatter.Deserialize(ms);
}
}