【发布时间】:2010-04-27 20:16:24
【问题描述】:
我面临的情况是我有依赖对象,我希望能够删除一个对象以及对它的所有引用。
假设我有一个类似于下面代码的对象结构,其分支类型引用了两个节点。
public class Node
{
// Has Some Data!
}
public class Branch
{
// Contains references to Nodes
public Node NodeA
public Node NodeB
}
public class Graph
{
public List<Node> Nodes;
public List<Branch> Branches;
}
如果我从 Graph 类的节点列表中删除一个节点,一个或多个分支对象仍然可能包含对已删除节点的引用,从而将其保留在内存中,而我真正想要的将所有对已删除节点的引用设置为 null 并让垃圾收集开始。
除了枚举每个分支并按顺序检查每个节点引用之外,关于如何删除每个分支实例中的节点引用以及实际上引用已删除节点的任何其他类是否有任何聪明的想法?
【问题讨论】:
-
您实际上是否在分支上存储任何数据?如果没有,您可以完全摆脱该类,只需将相关节点存储在 Node 类中。
-
嗨,是的,我正在存储一些其他数据,上面的数据结构只是一个简单的示例,用于显示我的实际模型的引用在哪里。