问题描述
我为我的项目编写了新代码,当我运行单元测试时,我注意到 dotnet 崩溃了。
但我不知道为什么。所以我将一些代码移到控制台应用程序并运行它。然后我得到了这个输出:
Stack overflow.
Repeat 24047 times:
--------------------------------
at [[ class and method names here ]]
--------------------------------
at [[ class and method names here ]]
一段时间后,出现 StackOverflowException: The runtime refused to evaluate the expression at this time.
之后,dotnet 再次崩溃。
就是这样。这样build过程(编译)就成功了,但是好像CLR崩溃了??
这是我的错还是我应该向 Microsoft 报告的事情(甚至可能与安全相关)?
编辑:这是一些代码以及我的问题的解释。这是我网站上的递归错误:https://dotnetfiddle.net/RD69Mk
解决方法
是你的错。您有一个递归方法调用,您应该查看列出的提到的类和方法。请勿向 Microsoft 报告。
相反,使用调试器并逐步执行您的代码以查看它的作用以及为什么这样做。
重现问题的最简单程序是
class Program
{
static void Main()
{
Main();
}
}
它是一个有效的 C# 程序吗?是的。是否有意义?不是。是微软的问题吗?号
递归实现需要一个停止条件,即它中断对自身的重复调用的情况。