所以我在visual studio中遇到了一些奇怪的错误。调试器崩溃了(我想)。这是崩溃的功能。这是针对C#中的通用BST,其中==运算符被重载以添加节点之间的简单比较。
public static bool operator ==(Node<T> lhs, Node<T> rhs)
{
if ((lhs == null) || (rhs == null))
{
return false;
}
if((lhs.Data).CompareTo(rhs.Data) == 0)
{
return true;
}
else
{
return false;
}
}
它在这一行崩溃了:
if ((lhs == null) || (rhs == null))
在调试时,lhs确实为null,一旦开始比较,它就会挂起,然后显示以下消息:
然后调试会话就结束了。
我真的不明白,因为为了试图找出我的代码的问题,我正在尝试调试,但是这个错误发生了,会话就结束了。我以前从未见过这个。
答案 0 :(得分:1)
您正在递归调用==
运算符。使用if (ReferenceEquals(lhs, null) || ReferenceEquals(rhs, null))
来避免这种情况。
或者,使用C#7模式匹配:
if (lhs is null || rhs is null)