【发布时间】:2023-03-26 17:07:01
【问题描述】:
以下是创建自定义 C# 列表并删除列表中的节点的代码:
static void Main(string[] args)
{
ListNode rootNode = CreateList();
DeleteNode(rootNode.ChildNode);
....
}
private static ListNode CreateList()
{
ListNode node1 = new ListNode()
{
Value = 1,
ParentNode = null;
}
ListNode node2 = new ListNode()
{
Value = 2,
ParentNode = node1
}
node1.ChildNode = node2;
return node1;
}
private static void DeleteNode(ListNode node2)
{
node2.ParentNode.ChildNode = null;
node2 = null;
}
我可以假设在调用 DeleteNode(rootNode.ChildNode) 之后,子节点(或 node2)将被垃圾收集吗?
【问题讨论】:
-
不,你不能假设它会被垃圾回收,但你可以假设如果发生 GC,它会被回收,因为它不再是 root。
-
如果要显式释放资源,可以使用
IDisposable接口docs.microsoft.com/en-us/dotnet/api/…
标签: c# linked-list garbage-collection