Visual Studio调试器崩溃

时间:2018-02-25 01:43:20

标签: c# visual-studio debugging

所以我在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,一旦开始比较,它就会挂起,然后显示以下消息:

enter image description here

然后调试会话就结束了。

我真的不明白,因为为了试图找出我的代码的问题,我正在尝试调试,但是这个错误发生了,会话就结束了。我以前从未见过这个。

1 个答案:

答案 0 :(得分:1)

您正在递归调用==运算符。使用if (ReferenceEquals(lhs, null) || ReferenceEquals(rhs, null))来避免这种情况。

或者,使用C#7模式匹配: if (lhs is null || rhs is null)