0

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

4

1 回答 1

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);
        }
    }
于 2013-06-15T01:34:35.747 回答