system.stackoverflowexception无法计算表达式,因为当前线程处于堆栈溢出状态

Pin*_*inu 3 c# asp.net windows-applications

当代码命中此函数时,我收到System.StackOverFlowException.

其中stringtype是用户定义的tupe,等于int类型库中的函数.

  public static bool Equals(StringType leftHand, StringType rightHand)
  {
       if (leftHand == rightHand)
       {
          return true;
       }
       if ((leftHand == "0") || (rightHand == "0"))
       {
          return false;
       }
       return (leftHand.myValue.Equals(rightHand.myValue) && leftHand.myState.Equals(rightHand.myState));
   }
Run Code Online (Sandbox Code Playgroud)

xan*_*tos 10

这个

if (leftHand == rightHand)
Run Code Online (Sandbox Code Playgroud)

改成

if (object.ReferenceEquals(leftHand, rightHand))
Run Code Online (Sandbox Code Playgroud)

您可能重新定义了==要调用的运算符Equals.

我希望你没有一个隐式运算符来string创建StringType,否则

if ((leftHand == "0") || (rightHand == "0"))
Run Code Online (Sandbox Code Playgroud)

可能会出于同样的原因自称.

大概

if ((leftHand.myValue == "0") || (rightHand.myValue == "0"))
Run Code Online (Sandbox Code Playgroud)

会更好.