为什么在函数执行之前有一个stackoverflow异常?

时间:2016-05-11 06:45:11

标签: c# stack-overflow

我编写的代码覆盖了对象的Equals。 在我写完之后,我意识到我将要使用StackOverFlowException,因为我还没有实现IEquatable接口来处理最后一行代码。然而,我运行代码来查看发生了什么,并且发生了一些奇怪的事情,您可以在下面的图像中看到自己:

enter image description here

此时断点甚至无法打击,似乎代码在我的程序运行之前就被使用了。这是由CLR完成的吗?是别的吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

上的筹码已经耗尽(最后一根破坏骆驼的稻草)
  if (ReferenceEquals(right, null))

可能,堆栈没有另外4(8)个字节来存储right。 实际原因似乎是

  return Equals(right as Quality)

如果right属于Quality类型,则代码注定会一次又一次地调用Equals