Pin*_*inu 3 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));
}
Run Code Online (Sandbox Code Playgroud)
xan*_*tos 10
这个
if (leftHand == rightHand)
Run Code Online (Sandbox Code Playgroud)
改成
if (object.ReferenceEquals(leftHand, rightHand))
Run Code Online (Sandbox Code Playgroud)
您可能重新定义了==要调用的运算符Equals.
我希望你没有一个隐式运算符来string创建StringType,否则
if ((leftHand == "0") || (rightHand == "0"))
Run Code Online (Sandbox Code Playgroud)
可能会出于同样的原因自称.
大概
if ((leftHand.myValue == "0") || (rightHand.myValue == "0"))
Run Code Online (Sandbox Code Playgroud)
会更好.