对象指针

本文关键字:指针 对象 | 更新日期: 2023-09-27 18:18:34

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

对象指针

我自己解决了这个问题,对于那些说我使用指针的想法,这来自我的C背景…无论如何,使用序列化,这个方法正好满足了我的需要。

    public object Clone()
    { 
        using (MemoryStream ms = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(ms, this);
            ms.Position = 0;
            return formatter.Deserialize(ms);
        }
    }