代码达到此功能时,我得到了System.StackOverFlowException。

其中stringtype是用户定义的元组,它等于类型库中的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));
   }

最佳答案


if (leftHand == rightHand)

改成
if (object.ReferenceEquals(leftHand, rightHand))

您可能重新定义了==运算符以调用Equals

而且我希望您没有从string创建StringType的隐式运算符,因为否则
if ((leftHand == "0") || (rightHand == "0"))

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

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

会更好。

09-07 06:22