C#从对象内部进行深层复制[复制]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#从对象内部进行深层复制[复制]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个包含许多私有属性的对象。它有一个空构造函数,以及一个接受其自身实例化版本的构造函数。我需要将此新实例分配给旧实例的深层副本。可以这样做吗?例:

public class Foo
{
    private Property p;

    public Foo()
    {
        p = new Property("this and that");
    }
        public Foo(Foo f)
    {
        this.Object = f.DeepCopy;   // What would this statement be?
    }
}

HALP。

答案

您可以使用以下方法将对象从一个深度复制到另一个。

public T DeepCloneTheObject<T>(T obj)
        {
            using (var ms = new MemoryStream())
            {
                var formatter = new BinaryFormatter();
                formatter.Serialize(ms, obj);
                ms.Position = 0;

                return (T)formatter.Deserialize(ms);
            }
        }

在你的例子中,你可以说,DeepCloneTheObject(f)

以上是关于C#从对象内部进行深层复制[复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使Java中的InputStream的深层复制

java数组对象的浅层复制与深层复制

如果'C'从'B'公开继承,B私下从'A'继承,为啥我不能在'C'内部创建'A'的对象? [复制]

深层拷贝与浅层拷贝

Part6 数组指针与字符串 6.12 对象复制与移动

(转载)深拷贝与浅拷贝