如何防止程序崩溃与StackOverFlowException?

时间:2017-07-29 14:29:31

标签: c#

以下是我在一次采访中遇到的代码段。

    public class ClassA
    {
        public void Method1()
        {
            ClassB c = new ClassB();
            c.Method2();
        }
    }
    public class ClassB
    {

        public void Method2()
        {
            ClassA c = new ClassA();
            c.Method1();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            ClassA c = new ClassA();
            c.Method1();
        }
    }

问题是,防止这种情况的最佳方法是什么?程序正在崩溃,因为它循环到无限循环。

2 个答案:

答案 0 :(得分:2)

你没有方法1调用方法2和方法2调用方法1没有一些警卫告诉他们什么时候停止。这就像没有停止条件的递归。

没有人可以指导你没有更多细节。

答案 1 :(得分:0)

您需要通过设计更改来解决循环依赖关系。解决循环依赖的第一步是引入接口,但这只会掩盖可能的错误设计。检查循环依赖的这些示例:https://www.codeproject.com/Articles/616344/What-is-Circular-dependency-and-how-do-we-resolve