c# - 如何深度克隆 C# 中的互连对象?

标签 c# clone

深度克隆一组相互关联的对象的最佳方法是什么?示例:

class A {
    B theB; // optional
    // ...
}

class B {
    A theA; // optional
    // ...
}

class Container {
    A[] a;
    B[] b;
}

显而易见的事情是遍历对象并在我到达它时深度克隆所有内容。然而,这会产生一个问题——如果我克隆一个包含 BA,并且 B 也在 Container< 中,在我克隆Container之后,B将被克隆两次。

下一个合乎逻辑的步骤是创建一个 Dictionary 并在克隆之前查找每个对象。然而,这似乎是一个缓慢且不优雅的解决方案。

有什么想法吗?

最佳答案

这肯定不是一个优雅的解决方案,但使用字典(或 HashMap )并不少见。其中一个好处是 HashMap 具有恒定的查找时间,因此速度在这里并没有真正受到影响。

关于c# - 如何深度克隆 C# 中的互连对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683435/

相关文章:

c# - 开发人员是否可以通过 "force"系统来防止 "Metro"应用程序在后台异步进程运行时被挂起?

c# - 在多项目解决方案中使用 log4net

c# - 部署dll后如何在C#中获取安装目录

java - 从 java.lang.Object 访问 clone()

visual-studio - 如何克隆 visual studio 社区

c# - 方法作为构造函数的参数?

c# - 使用 C# LINQ 和 MongoDB 对嵌入/嵌套文档进行子查询或联接

javascript - 用 JQuery 替换 $j

c++ - 克隆抽象基类(不干涉派生)

c++ - 如何克隆子类而不重复代码?