当代码命中此函数时,我收到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));
}
答案 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"))
会更好。