3

当代码命中此函数时,我得到一个 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));
   }
4

1 回答 1

10

这个

if (leftHand == rightHand)

改成

if (object.ReferenceEquals(leftHand, rightHand))

您可能将==运算符重新定义为 call Equals

而且我希望你没有一个隐含的操作符 from stringcreated StringType,否则

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

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

大概

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

会更好。

于 2013-08-12T14:09:57.437 回答