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

时间:2013-08-12 14:07:48

标签: 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));
   }

1 个答案:

答案 0 :(得分:10)

if (leftHand == rightHand)

更改为

if (object.ReferenceEquals(leftHand, rightHand))

您可能已重新定义==运算符以致电Equals

我希望您没有string创建StringType的隐式运算符,否则

if ((leftHand == "0") || (rightHand == "0"))

可能会因为同样的原因而自称。

可能

if ((leftHand.myValue == "0") || (rightHand.myValue == "0"))

会更好。