我正在内存中的图形上运行一些操作,这些操作会修改图形本身。我需要多次重复这些操作,随后的重复必须在图形的新副本上工作。由于图表是通过解析文件生成的,我真的不想每次重复都花时间重新解析文件,所以我走上了克隆原始图表的路线。
我的node
,edge
和graph
类型都在实现ICloneable
,但是我有一个循环引用链的问题。
Node
存储Edge
来自它的定向 s 的列表。Edge
存储重量和Node
它指向的。当两个节点共享一条双向边时,StackOverflowException
当我尝试克隆任一节点时会得到一个,因为克隆任一节点的边列表总是意味着克隆另一个节点。
为了克隆的目的,解决这个循环引用的最佳方法是什么?