【问题标题】:Deep clone class and subclasses in C# [duplicate]C#中的深层克隆类和子类[重复]
【发布时间】:2013-07-28 01:42:42
【问题描述】:

我最近发现 MemberwiseCloning 一个类似乎不会克隆它的子类(在其中定义的类)。它们似乎仍然被视为指针。有什么方法可以克隆一个包含所有子类的整个类吗?

【问题讨论】:

  • " 有什么方法可以克隆一个包含所有子类的整个类吗?" - 是的。写一个克隆方法。上网搜索一下使用序列化的短代码sn-p。也许尝试在搜索引擎中输入你的标题?
  • 每个答案旁边都有一个全息复选框,通过勾选它可以为您提供几分,并通过让每个人知道您的问题已解决来节省每个人的时间。祝你好运:)

标签: c# class clone


【解决方案1】:

使用类似的东西

public object Clone()
{
    using (var memStream = new MemoryStream())
    {
        var binaryFormatter = new BinaryFormatter(
           null, 
           new StreamingContext(StreamingContextStates.Clone));
        binaryFormatter.Serialize(memStream, this);
        memStream.Seek(0, SeekOrigin.Begin);
        return binaryFormatter.Deserialize(memStream);
    }
}

【讨论】:

  • 性能怎么样?!我们应该使用这个技巧还是为每个子类定义函数 ICloeable.Clone() 以获得性能?
  • @K4timini:如果你需要深度克隆,我认为这是最高效的方法。
猜你喜欢
  • 2018-08-28
  • 1970-01-01
  • 2020-03-04
  • 2016-12-20
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多