【问题标题】:C# Deep Copy from inside the object [duplicate]C#从对象内部进行深度复制[重复]
【发布时间】:2018-02-12 05:22:50
【问题描述】:

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

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?
    }
}

暂停。

【问题讨论】:

    标签: c# constructor instance deep-copy


    【解决方案1】:

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

    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)

    【讨论】:

    • 感谢您的回复,但是如何将其分配给当前对象?我需要使实例的所有属性都等于克隆的属性。我唯一能想到的就是“this.Object = DeepCloneTheObject(f);”这样的东西。
    • 是的,这样做应该可行
    猜你喜欢
    • 2012-07-03
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2018-10-08
    • 1970-01-01
    • 2023-03-17
    • 2014-11-03
    相关资源
    最近更新 更多