当代码遇到此函数时,我收到 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"))
会更好。
关于c# - system.stackoverflowexception 无法计算表达式,因为当前线程处于堆栈溢出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189123/