C#指向对象的指针?

时间:2013-06-15 01:19:49

标签: c# pointers unmanaged

我需要'复制'一个对象。我尝试使用IClonable接口,但无济于事,最灵敏的解决方案是使用不安全的代码创建指向对象的指针,然后在C中编写类似Memcpy的方法。唯一的问题是创建指向托管类型的指针。我假设这样做会带来垃圾收集器的问题,但如果可以使用编组或其他东西来创建指向托管对象的指针,那么我可以在C中编写像memcpy这样的函数,只需复制我的对象。如果结构可以不受管理那么为什么不能对象呢?一个对象本质上是一个struct指针,所以理论上它应该等于IntPtr的大小吧?

1 个答案:

答案 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);
        }
    }