【发布时间】:2023-03-30 08:53:01
【问题描述】:
我有一个带有罕见但可能的循环的对象结构。 (循环是正常的。)当使用递归方法遍历结构时,循环会导致堆栈溢出。与其向所涉及的方法添加另一个参数,不如找出“this”中的当前方法是否已经在堆栈中。这可能吗?
【问题讨论】:
-
也许您可以使用
lock和Monitor.IsEntered来检测这种情况... -
@Johnny 在同一个线程,锁没用..
-
我说的不是锁定而是检测递归...
-
我在实现深拷贝算法时遇到了一个非常相似的问题。当你开始浏览这个结构时,传递一个
HashSet并将对象添加到这个HashSet中。当您开始进一步向下结构尝试将当前对象添加到HashSet如果您未能添加这意味着您进入了一个循环。就这么简单,性能超级好